Python网络爬虫之Requests库
一.Request库安装
在win平台:“以管理员的身份”cmd , 执行 pip install requests
Requests库 安装小测
>>> import requests
>>> r=requests.get('http://www.baidu.com')
>>> print(r.status_code)
200
>>> r.text
'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>ç\x99¾åº¦ä¸\x80ä¸\x8bï¼\x8cä½\xa0å°±ç\x9f¥é\x81\x93</title></head> <body link=#0000cc>
Requests库 的7个主要方法
requests.request():构造一个请求,支撑一下各方法的基础方法
requests.get():获取HTML网页的主要方法,对应HTTP的GET
requests.head():获取HTML网页头的信息方法,对应HTTP的HEAD
requests.post():向HTML网页提交POST请求方法,对应HTTP的POST
requests.put():向HTML网页提交PUT请求的方法,对应HTTP的RUT
requests.patch():向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete():向HTML页面提交删除请求,对应HTTP的DELETE
Requests库 的get() 方法
requests.get(url,params=None,**kwargs)
url :拟获取页面url链接
params :url中的额外参数,字典或字节流格式,可选
**kwargs :12个控制访问的参数
Response 对象包含服务器返回的所有信息,也包含请求Request 信息
Response 对象的属性
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
r.text HTTP响应内容的字符串形式,即url对应页面内容
r.encoding 从HTTP header 中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式
出现乱码:
>>> import requests
>>> r=requests.get('http://www.baidu.com')
>>> print(r.status_code)
200
>>> r.text
'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>ç\x99¾åº¦ä¸\x80ä¸\x8bï¼\x8cä½\xa0å°±ç\x9f¥é\x81\x93</title>
解决方式:
>>> r=requests.get('http://www.baidu.com')
>>> r.status_code
200
>>> r.encoding
'ISO-8859-1'
>>> r.apparent_encoding
'utf-8'
>>> r.encoding=r.apparent_encoding
>>> r.text
'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title>
爬取网页通用代码框架:
import requests
def getHTMLText(url):
try:
r=requests.get(url)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__=="__main__":
url="http://www.baidu.com"
print(getHTMLText(url))
HTTP,Hypertext Transfer Protocol,超文本传输协议。
HTTP是一个基于“请求与响应”模式的,无状态的应用层协议。
HTTP协议采用URL作为定位网络资源的标识。
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径
HTTP协议对资源的操作:
GET:请求获取URL位置的资源
HEAD:请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST:请求想URL位置的资源后附加新的数据
PUT:请求URL位置存储的一个资源,覆盖原URL位置的资源
PATCH:请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE:请求删除URL位置存储的资源
"""
"""
method:请求方式,对应get/put/post等7种
url:拟获取页面的url链接
**kwargs:控制访问参数,共13个
params:字典或字节序列,作为参数增加到url中
例:kv={'key1':'value','key2':'value2'}
r=requests.request('GET','http://python123.io/ws',params=kv)
print(r.url)
http://python.io/ws?key1=value1&key2=value2
json:JSON格式的数据,作为Request的内容
headers:字典,HTTP定制头(模拟浏览器进行访问)
cokies:字典或CpplieJar,Request中的cookie
auth:元祖,支持HTTP认证功能
files:字典类型,传输文件
timeout:设定超时时间,秒为单位
proxies:字典类型,设定访问代理服务器,可以增加登陆认证
allow_redirects:True//False,默认为True,重定向开关
stream:True/False,默认为True,获取内容立即下载开关
verify:True/False,默认为True,认证SSL证书开关
cert:本地SSL证书路径"""
上一篇: Pyspider 框架的用法
下一篇: python相对路径的指定