python爬取准备三urllib2模块

  

urllib/urllib2默认的用户代理是Python-urllib/2.7,容易被检查到是爬的虫,所以我们要构造一个请求对象,要用到请求方法。

  

<强> 1。查看头信息

  

 python爬取准备三urllib2模块

  

<强> 2。设置用户代理模仿浏览器访问数据

  

请求总共三个参数,除了必须要有url参数,还有下面两个:
数据(默认空):是伴随url提交的数据(比如要发布的数据),同时HTTP请求将从“GET"方式改为“POST"方式。
头(默认空):是一个字典,包含了需要发送的HTTP报头的键值对

  
 <代码> # _ * _编码:utf - 8 _ * _
  进口urllib2
  #用户代理是爬虫与反爬虫的第一步
  ua_headers={“用户代理”:“Mozilla/5.0 (Windows NT 6.1;Win64;x64) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/60.0.3112.101 Safari/537.36 '}
  #通过urllib2.Request()方法构造一个请求对象
  请求=urllib2.Request (“http://www.baidu.com/?标题=ua_headers)
  #向指定的url地址发送请求,并返回服务器响应的类文件对象
  响应=urllib2.urlopen(请求)
  #服务器返回的类文件对象支持python文件对象的操作方法
  # read()方法就是读取文件里的全部内容,返回字符串
  html=response.read ()
  打印html代码 之前
  

<强> 3。选择随机的使用代理

  

为了防止封IP,先生成一个用户代理列表,然后从中随机选择一个

  
 <代码> # _ * _编码:utf - 8 _ * _
  进口urllib2
  进口随机
  url=' http:/www.baidu.com/'
  #可以试用户代理列表,也可以是代理列表
  ua_list=[" Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.1 (KHTML,像壁虎)Chrome/22.0.1207.1 Safari 537.1”,
  “Mozilla/5.0 (X11;横i686 2268.111.0) AppleWebKit/536.11 (KHTML,像壁虎)Chrome/20.0.1132.57 Safari 536.11”,
  “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.6 (KHTML,像壁虎)Chrome/20.0.1092.0 Safari 536.6”,
  “Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML,像壁虎)Chrome/20.0.1090.0 Safari 536.6”,
  “Mozilla/5.0 (Windows NT 6.2;WOW64) AppleWebKit/537.1 (KHTML,像壁虎)Chrome/19.77.34.5 Safari 537.1”,
  “Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/536.5 (KHTML,像壁虎)Chrome/19.0.1084.9 Safari 536.5”,
  “Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML,像壁虎)Chrome/19.0.1084.36 Safari 536.5”,
  “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1063.0 Safari 536.3”,
  “Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1063.0 Safari 536.3”,
  “Mozilla/5.0(麦金塔电脑;Intel Mac OS X 10 _8_0) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1063.0 Safari 536.3”,
  “Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1062.0 Safari 536.3”,
  “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1062.0 Safari 536.3”,
  “Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1061.1 Safari 536.3”,
  “Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1061.1 Safari 536.3”,
  “Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1061.1 Safari 536.3”,
  “Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML,像壁虎)Chrome/19.0.1061.0 Safari 536.3”,
  “Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/535.24 (KHTML,像壁虎)Chrome/19.0.1055.1 Safari 535.24”,
  “Mozilla/5.0 (Windows NT 6.2;WOW64) AppleWebKit/535.24 (KHTML,像壁虎)Chrome/19.0.1055.1 Safari 535.24”
  ]
  #在用户代理列表中随机选择一个用户代理
  user_agent=random.choice (ua_list)
  #构造一个请求
  请求=urllib2.Request (url)
  # add_header()方法添加/修改一个HTTP报头
  request.add_header(“用户代理”,user_agent)
  # get_header()获取一个已有报的HTTP头的值,注意只能第一个字母大写,后面的要小写
  打印request.get_header(“用户代理”) 
  

<强> 4. urllib和urllib2的主要区别

  

urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能,最显著的区别如下:

  

(1) urllib仅可以接受URL,不能创建,设置头的请求类实例;

  

(2)但是urllib提供urlencode()方法用来得到查询字符串的产生,而urllib2则没有(这是urllib和urllib2经常一起使用的主要原因)

  

(3)编码工作使用urllib的urlencode()函数,帮我们讲重点:价值这样的键值对转换成“键=值”这样的字符串,解码工作可以使用urllib的结束()

python爬取准备三urllib2模块