urllib库是python中一个最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据。
**urlopen函数:**
在python3的urllib库中,所有和网络请求相关的方法,都被收集到**urllib.request**模块下了。
from urllib import request
resp = request.urlopen("http://www.baidu.com")
print(resp.readlines())
- 1
- 2
- 3
- 4
- 5
- 6
urlretrieve函数
这个函数可以方便将网页上的一个文件保存到本地。
from urllib import request
request.urlretrieve("http://img.mp.itc.cn"
"/upload/20170411/4b602cb0e43a4f4bbfb9217a6554693c_th.jpeg","luban.jpg")
urlencode函数
用浏览器发送请求的时候,如果URL中包含了中文或者其他特殊字符,那么浏览器会自动给我们进行编码。而如果使用代码发送请求,那就必须手动的进行编码,这时候就应该使用urlencode函数来实现。urlencode函数可以把字典数据转换为URL编码的数据。
parse_qs函数
可以将经过编码后的URL参数进行解码。
urlparse和urlsplit函数
有时候拿到一个URL,想要对这个URL中的各个组成部分进行分割,那么这时候就可以使用urlparse和urlsplit函数进行分割:分割后可以得到scheme、netloc、params、path、 query和fragment属性。区别是urlparse里面有params属性而urlsplit没有。
request.Request类
增加headers,防止被反爬虫机制拦截。增加User-Agent和Refere。
ProxyHandler处理器(代理设置)
很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,它会禁止这个IP的访问。所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP 继续爬取。
urllib中通过ProxyHandler来设置使用代理服务器。(使用自定义的opener来使用代理)
常用的代理有:西刺免费代理:http://www.xicidaili.com/
快代理:http://www.kuaidaili.com
代理云:http://www.dailiyun.com
http://httpbin.org:这个网站可以方便的查看http请求的一些参数。
cookie
cookie的格式:Set-cookie:NAME=VALUE:Expires/Max_age=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
参数意义:
NAME:cookie的名字;
VALUE:cookie的值;
Expires:cookie的过期时间;
Path:cookie作用的路径;
Domain:cookie作用的域名;
SECURE:是否只在https协议下起作用。