urllib库概述
urllib库是Python中的一个最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据。
urlopen函数
python3的urllib库中所有和网站请求相关的方法都被集中,在’urllib.request’模块中,urlopen可以将当页全部代码爬下来
from urllib import request
res = request.urlopen('http://www.baidu.com')
print(res.read())
urlretrieve函数
这个函数可以方便的将网页上的一个文件保存到本地。
from urllib import request
request.urlretrieve('http://www.baidu.com/','baidu.html')
urlencode函数
使用代码发送请求时,如果url中包含了中文或其他特殊字符,必须手动进行编译,这时候应该使用urlencode函数来实现。
from urllib import parse
data = {'name':'爬虫基础','greet':'hello','age':'80'}
qs = parse.urlencode(data)
print(qs)
urlparse和urlsplit
有时候拿到一个url,想对这个url中的各个组成部分进行分割,这时候可以使用urlparse或urlsplit来进行分割。
from urllib import request.parse
url = 'http://www.baidu.com/'
result = parse.urlsplit(url)
print('scheme',request.scheme)
print('path',request.path)
urlparse和urlsplit基本上是一样的,唯一不同的是urlparse中多了一个params属性。
ProxyHandler处理器(实现代理)
很多网站会检测某一时间段某个IP的访问次数(通过流量统计,系统日志等),如果访问次数过多,他会禁止这个IP访问。所以我们可以设置一些代理服务器。
from urllib import request
handler =request.ProxyHandler({"http":"218.66.161.88.31769"})
opener = request.build_opener(handler)
req = request.Request("http://httpbin.org/ip")
resp = opener.open(req)
print(resp.read())
常用代理:
- 快代理:http://www.kuaidaili.com/
- 代理云:http://www.dailiyun.com/