urllib库是python内置的http请求库,包含四个模块:
函数 | 说明 |
---|---|
urllib.request | 请求模块 |
urllib.error | 异常处理模块 |
urllib.parse | URL解析模块 |
urllib.robotparser | robots.txt模块 |
robots.txt是Robots协议(网络爬虫排除协议),是互联网界通行的道德模范,基于以下原则:
- 搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权
- 网站有义务保护其使用者的个人信息和隐私不被侵犯
爬取白度网页
import urllib.request
respone=urllib.request.urlopen('http://www.baidu.com')
html=respone.read().decode('UTF-8')
print(html)
核心的爬虫代码:urlopen.request.urlopen(url,data=None,
[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)
参数 | 说明 |
---|---|
url | 目标资源在网站的位置 |
data | 指明额外的请求信息 |
timeout | 超时时间,秒 |
cafile/capath/cadefault | 实现可信任的CA证书的HTTPS请求 |
context | 实现SSL加密传输 |
- data参数只在打开htttp网址时起作用,默认为None,以GET发送请求,设置后请求方式改为POST
- data参数必须是bytes对象,符合the standard applocation/x-www-form-urlencoded format标准
-
urlib.parse.urlencode()可以将自定义的data转化为标准格式,该函数接受mapping类型参数(dict或两个元素的元组)
data参数的使用:
import urllib
data=bytes(urllib.parse.urlencode({'world':'hello'}).encode('utf-8'))
response=urllib.request.urlopen('http://httpbin.org/post',data=data)
print(response.read())
import urllib
response=urllib.request.urlopen('http://httpbin.org/get',timeout=1)
print(response.read())