学习了爬虫有一段时间了,是时候对urllib、requests、scrapy三者的基本用法做一次总结了。
1、urllib模块
1.1、添加UA
1 import urllib.request 2 ?3 # User-Agent是爬虫与反爬虫的第一步 4 ua_headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) ‘ 5 ????????????????????????????‘AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36‘} 6 # 通过urllib2.Request()方法构造一个请求对象 7 request = urllib.request.Request(‘http://www.baidu.com/‘, headers=ua_headers) 8 response = urllib.request.urlopen(request) 9 html = response.read()10 11 print(html)
1.2、ProxyHandler处理器(代理设置)
需要注意的是,urlopen()方法不支持代理,也不支持获取、存储cookie,所以要为我们的urllib设置代理或者进行cookie的操作的话需要先自定义opener()方法
1 import urllib.request 2 ?3 ?4 # 构建一个HTTPHandler 处理器对象,支持处理HTTP请求 5 http_handler = urllib.request.HTTPHandler() 6 ?7 # 构建一个HTTPHandler 处理器对象,支持处理HTTPS请求 8 # http_handler = urllib2.request.HTTPSHandler() 9 10 # 调用urllib.request.build_opener()方法,创建支持处理HTTP请求的opener对象11 opener = urllib.request.build_opener(http_handler)12 13 # 构建 Request请求14 request = urllib.request.Request("http://www.baidu.com/")15 16 17 # 调用自定义opener对象的open()方法,发送request请求18 response = opener.open(request)19 20 # 获取服务器响应内容21 print(response.read())
这个时候在来添加我们的代理到urllib中
1 import urllib.request 2 ?3 # 构建了两个代理Handler,一个有代理IP,一个没有代理IP 4 httpproxy_handler = urllib.request.ProxyHandler({"http": "124.88.67.81:80"}) ???# 传入的是字典 5 nullproxy_handler = urllib.request.ProxyHandler({}) 6 ?7 proxySwitch = True #定义一个代理开关 8 ?9 # 通过 urllib2.build_opener()方法使用这些代理Handler对象,创建自定义opener对象10 # 根据代理开关是否打开,使用不同的代理模式11 if proxySwitch:12 ????opener = urllib.request.build_opener(httpproxy_handler)13 else:14 ????opener = urllib.request.build_opener(nullproxy_handler)15 16 request = urllib.request.Request("http://www.baidu.com/")17 18 # 1. 如果这么写,只有使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。19 response = opener.open(request)20 21 # 2. 如果这么写,就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。22 # urllib2.install_opener(opener)23 # response = urlopen(request)24 25 print(response.read())
对urllib、requests、scrapy的总结
原文地址:https://www.cnblogs.com/pontoon/p/10321277.html