原理:以主机先访问代理ip,再通过代理IP地址访问互联网,网站(服务器)接收到的访问IP就是代理IP。
urllib.request.ProxyHandler()动态设置代理IP池。代理IP主要以 字典的形式写入。
设置代理之后,将设置好的代理IP写入urllib.request.build_opener()方法 ,生成opener对象,通过opener的open方法向网站(服务器)发送请求。
import urllib.request
from http import cookiejar
url = 'http://movie.douban.com/'
#设置代理IP
proxy_handler = urllib.request.ProxyBasicAuthHandler({
'http':'',
'https':''
})
#必须使用build_opener()函数来创建带有代理IP功能的opener对象
opener = urllib.request.build_opener(prxies=proxy_handler)
r = opener.open(url)
html = r.read().decode('utf-8')
f = open('html.txt', 'w', encoding='utf-8')
f.write(html)
f.close()
豆瓣有登陆,运行出错
加入cookie
import urllib.request
from http import cookiejar
url = 'http://movie.douban.com'
filename = 'cookie.txt'
#创建MozillaCookieJar对象
cookie = cookiejar.MozillaCookieJar(filename)
#读取cookie内容到变量
cookie.load(filename, ignore_discard=True, ignore_expires=True)
#httpcookieprocessor创建cookie处理器
handler = urllib.request.HTTPCookieProcessor(cookie)
#创建opener
opener = urllib.request.build_opener(handler)
#opener打开网页
r = opener.open(url)
print(r.read())
cookie.save(ignore_discard=True, ignore_expires=True)