1.本周学习内容思维导图
Requests库.png2.目录
- Requests库对象的属性
- Requests库方法入门
- HTTP协议简介
- 爬取网页的通用代码框架
- robot协议简介
3.Requests库对象的属性
了解Requests库对象的属性,先用Requets库的get()
方法获取对象,例如爬取百度首页
>>> import requests
>>> r = requests.get("http://www.baidu.com")
>>> r.status_code #HTTP请求的返回状态,200表示连接成功,404表示连接失败
200
>>> r.text #HTTP响应内容的字符串形式,既url对应的页面内容
'<!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 ...
>>> r.encoding #从HTTP中猜测的响应内容方式
'ISO-8859-1'
>>> r.apparent_encoding #从内容中分析出的相应内容编码方式(备选编码方式)
'utf-8'
>>> r.content #HTTP响应内容的二进制形式
b'<!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>\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <d ...
4.Requests库方法入门
-
request.request(method,url,**kwargs)
method
:请求方法
r = request.requests('GET',url,kwargs)
r = request.requests('HEAD',url,kwargs)
r = request.requests('POST',url,kwargs)
r = request.requests('PUT',url,kwargs)
r = request.requests('PATCH',url,kwargs)
r = request.requests('delete',url,kwargs)
r = request.requests('OPTION',url,**kwargs)
**kwargs
:控制访问的参数,均为可选参数
-
parmas
:字典或者字节序列,作为参数增加到url中
>>> kv = {'key1':'value1','key2':'value2'}
>>> r = request.request('GET','http://python123.io/ms',params=kv)
>>> print(r.url)
http://python123.io/ws?key1=value1&key2=value2 -
data
:字典、字节序列或者文件对象
>>> kv = {'key1':'value1','key2':'value2'}
>>> r = requests.request('POST','http://python123.io/ws',data = kv)
>>> body = '主体内容'
>>> r = requests.request('POST','http://python123.io/ws',data = kv)
>>> r = requests.request('POST','http://python123.io/ws',data = kv)
将data放在url链接对应的位置,作为数据来存储
-
json
:JSON格式的数据,作为Request的内容 -
headers
:字典,HTTP定制头
>>> hd = {'user-agent':'Chrome/10'}
>>> r = requests.request('POST','http://python123.io/ws',headers=hd)
在访问链接时,可以模拟成chrome 浏览器去访问链接
-
cookies
: 字典或者CookieJar,Request中的cookie -
auth
:元组,支持HTTP认证功能 -
files
:字典,传输文件 -
timeout
: 设定超时时间,秒为单位 -
proxies
: 字典类型,设定访问代理服务器,可以增加登陆认证 -
allow_redirects
:True/False,默认为True,重定向开关 -
stream
: True/False,默认为True,获取内容立即下载开关 -
verify
:True/False,默认为True,认证SSL证书开关 -
cert
:本地SSL证书路径
-
requests.get(url,params=None,**kwargs)
ur
·:拟获取页面的url链接
params
:url中的额外参数,字典或字节流格式,可选
**kwargs
:剩下的12个控制访问的参数 requests.head(url,**kwargs)
requests.post(url,data=None,json=None,**kwargs)
requests.put(url,data=None,**kwargs)
requests.patch(url,data=None,**kwargs)
requests.delete(url,**kwargs)
5.HTTP协议入门
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后附加新的数据 |
PUT | 请求向URL位置储存一个资源,覆盖原URL位置的资源 |
PATCH | 请求向局部更新URL位置的资源,即改变该处资源的部分欸容 |
DELETE | 请求删除URL位置储存的资源 |
6.爬取网页的通用代码框架
import requests
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status() #如果状态不是200,则引发异常
r.encoding = r.apparent_encoding
return r.text
except:
print("爬虫失败!")
if __name__ == "__main__":
url = "http://www.baidu.com"
print(getHTMLText())
7.robots协议
Robots Exclusion Standard 网络爬虫排除标准
作用 网站告知网络爬虫哪些页面可以抓取,哪些不行
形式 在网站根目录下的robot.txt 文件
比如:
http://www.jd.com/robots.txt
网友评论