urllib
urllib 是 Python 标准库中用于网络请求的库。该库有四个模块,分别是urllib.request
,urllib.error
,urllib.parse
,urllib.robotparser
。
-
获取网页源码:
urllib.request.urlopen(url)
-
数据需要字符串类型:
decode('utf-8')
-
数据需要bytes类型:
encode('utf-8')
-
网址拼接参数有汉字的,对汉字进行转义:
urllib.parse.quote(url,safe=string.printable)
-
拼接多个参数的:用字典来添加参数:
params = { 'wd': '中文', 'key': 'hello', 'value': 'world' }
-
对参数中包含汉字的进行转译:
str_params = urllib.parse.urlencode(params)
-
添加header
-
创建请求对象:
urllib.request.Request(url)
-
添加header:
request.add_header("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36")
-
-
选择User-Agent,模拟浏览器进行爬虫
-
添加agent_list数组
user_agent_list = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50", "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50" ]
-
利用random选择agent_list数组中的一个
random_user_agent = random.choice(user_agent_list)
-
请求url:
request = urllib.request.Request(url)
-
添加User-Agent信息:
request.add_header("User-Agent",random_user_agent)
-
获取网页源码:
response = urllib.request.urlopen(request)
-
利用urllib实现代理功能
原因:系统的urllib并没有添加代理的功能所以需要我们自己定义这个功能
-
创建自己handler:
handler = urllib.request.HTTPHandler()
-
创建自己的openner:
openner = urllib.request.build_opener(handler)
-
用自己的openner请求数据:
response = openner.open(url)
-
添加代理
-
添加代理:
proxy = { "http": "127.0.0.1:80" }
-
创建代理handler:
proxy_handler = urllib.request.ProxyHandler(proxy)
-
创建代理openner:
openner = urllib.request.build_opener(proxy_handler)
-
利用代理openner请求数据:
response = openner.open(url)
-