python爬虫 - 使用urllib(四)

现在已经可以修改headers和data,那么网站登陆可能需要cookies或者proxy,这又该如何解决?

cookies

Cookies 的处理就需要 Cookies 相关的 Handler 了。

import http.cookiejar, urllib.request

cookies = http.cookiejar.CookieJar()
handler = urllib.request.HTTPCookieProcessor(cookies)
opener = urllib.request.build_opener(handler)
response = opener.open('http://www.baidu.com')
for item in cookies:
    print(item.name+ "=" + item.value)

运行结果如下:

BAIDUID=80AABDE88B6B2E4E664C9A0C364A5A39:FG=1
BIDUPSID=80AABDE88B6B2E4E664C9A0C364A5A39
H_PS_PSSID=1449_21125_28328_28413
PSTM=1549343922
delPer=0
BDSVRTM=0
BD_HOME=0

这样就可以简单的获得网页的url了

proxy

在做爬虫的时候免不了要使用代理,如果要添加代理,可以这样做:

from urllib.error import URLError
from urllib.request import ProxyHandler, build_opener

proxy_handler = ProxyHandler({
    'http': 'http://127.0.0.1:1080',
    'https': 'https://127.0.0.1:1080'
})
opener = build_opener(proxy_handler)
response = opener.open('http://httpbin.org/get')
print(response.read().decode('utf-8'))

在此本地搭建了一个代理,运行在1080端口上。

在这里使用了ProxyHandler,ProxyHandler的参数是一个字典,键名是协议类型,比如HTTP还是HTTPS等,键值是代理链接,可以添加多个代理。

然后利用 build_opener()方法利用这个Handler构造一个Opener,然后发送请求即可。

你可能感兴趣的:(python爬虫)