代理
通过此种方式会伪装自己的IP地址,服务器识别时会识别我们伪装的代理地址。
from urllib import request
proxy_hander = request.ProxyHandler({
"http":"http://127.0.0.1:9743"
"https":"http://127.0.0.1:9743"
})
opener = request.bulid_opener(proxy_hander)
response = opener.open('http://www.baidu.com')
print(response.read())
Cookie
为什么要使用Cookie呢?
Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了 。
- 如何获取cookie信息?
from http import cookiejar from urllib import request #第一步:声明一个cookiejar对象 cookie = cookiejar.CookieJar() #第二步:根据cookiejar对象创建cookie信息的管理对象handler handler = request.HTTPCookieProcessor(cookie) #第三步:根据handler对象创建一个opener对象 opener = request.build_opener(handler) #第四步:根据opener对象打开网址 response = opener.open('https://www.baidu.com') #打印cookie信息 for item in cookie: print(item.name+"="+item.value)
- 如何将cookie信息保存至本地?
- CookieJar是一个类,其子类为FileCookieJar,它有两个子类:MozillaCookieJar,LWPCookieJar
MozillaCookieJar和LWPCookieJar都是用于将cookie信息保存为本地文件的一种形式,区别在于使用MozillaCookieJar生成的Cookie信息会保存为 Mozilla类型的Cookie格式,使用LWPCookieJar会将cookie信息保存为libwww-perl类型的cookie文件.
from http import cookiejar from urllib import request #保存cookie信息的文件名 filename = "cookie.txt" #第一步:声明一个MozillaCookieJar或者LWPCookie的一个对象 cookie = cookiejar.MozillaCookieJar(filename) #第二步:根据MozillaCookieJar生成的对象cookie来创建一个cookie信息管理对象hanler handler = request.HTTPCookieProcessor(cookie) #第三步:根据handler对象创建opener对象 opener = request.build_opener(handler) #第四步:根据opener对象对网址发送请求 response = opener.open("https://www.baidu.com") #第五步:将cookie信息保存到本地 # ignore_discard=True,即使cookie信息将要过期或者作废,也要将其保存至文件 # ignore_expires=True,即使cookie信息在文件中已经存在,仍然对其进行覆盖写入 cookie.save(ignore_discard=True,ignore_expires=True)
- CookieJar是一个类,其子类为FileCookieJar,它有两个子类:MozillaCookieJar,LWPCookieJar
- 读取cookie信息对网站进行访问
from http import cookiejar from urllib import request #第一步:声明一个MozillaCookieJar对象 cookie = cookiejar.MozillaCookieJar() #第二步:加载本地的cookie信息 # ignore_discard=True,即使cookie信息将要过期或者作废,也要读取cookie信息 # ignore_expires=True,即使cookie信息在文件中已经存在,仍然要读取。 cookie.load('cookie.txt',ignore_expires=True,ignore_discard=True) #第三步:根据cookie来创建其信息管理对象handler handler = request.HTTPCookieProcessor(cookie) #第四步:根据handler创建一个opener对象 opener = request.build_opener(handler) #第五步:根据opener对象调用opener方法对网站发送请求 response = opener.open('http://www.baidu.com') print(response.read().decode("utf-8"))