urllib2的基本使用

urlopen

  1 import urllib2
  2 
  3 # 向指定的url发送请求,并返回服务器响应的类文件对象
  4 response = urllib2.urlopen("http://www.baidu.com/")
  5 
  6 # 类文件对象支持文件的操作方法,如read()方法返回为字符串 
  7 html = response.read()
  8 
  9 print htm

上面代码就是打开百度主页的“查看源代码”的内容,还是比较简单的。

Request

在上个例子里,urlopen()的参数就是一个url地址;

但是如果需要执行更复杂的操作,比如增加HTTP报头,必须创建一个 Request 实例来作为urlopen()的参数;而需要访问的url地址则作为 Request 实例的参数。

  1 # -*- coding:utf-8 -*-
  2 import urllib2
  3 
  4 url = "http://www.baidu.com/"
  5 
  6 # url 作为Request()方法的一个参数,并构造一个Request对象
  7 request = urllib2.Request(url)
  8 
  9 # Request对象作为urlopen()方法的参数,发给服务器响应
 10 response = urllib2.urlopen(request)
 11 
 12 html = response.read()
 13 
 14 print html

与上面的运行时一样的

新建Request实例,除了必须要有 url 参数之外,还可以设置另外两个参数:

  1. data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。

  2. headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。

User-Agent

爬虫需要伪装自己,伪装成公认的浏览器

  1 # -*- coding:utf-8 -*-
  2 import urllib2
  3 
  4 url = "http://www.baidu.com/"
  5 headers = {"User-Agent" : "Mozilla/5.0(compatible;MSIE9.0;Windows NT6.1;Trident/5.0)"}
  6 
  7 
  8 # url和headers一起 作为Request()方法的参数,并构造一个Request对象
  9 request = urllib2.Request(url, headers=headers)
 10 
 11 # Request对象作为urlopen()方法的参数,发给服务器响应
 12 response = urllib2.urlopen(request)
 13 
 14 html = response.read()
 15 
 16 print html

添加更多的Header信息

特定的header

  1 # -*- coding:utf-8 -*-
  2 import urllib2
  3 
  4 url = "http://www.baidu.com/"
  5 headers = {"User-Agent" : "Mozilla/5.0(compatible;MSIE9.0;Windows NT6.1;Trident/5.0)"}
  6 
  7 
  8 # url和headers一起 作为Request()方法的参数,并构造一个Request对象
  9 request = urllib2.Request(url, headers=headers)
 10 # 调用Request.add_header(),添加或者修改特定的header
 11 request = add_header("Connectin", "keep-alive")
 12 
 13 # Request对象作为urlopen()方法的参数,发给服务器响应
 14 response = urllib2.urlopen(request)
 15 
 16 html = response.read()
 17 
 18 print html

随机添加/修改User-Agent

 1 import urllib2
 2 import random
 3 
 4 url = "http://www.itcast.cn"
 5 
 6 ua_list = [
 7     "Mozilla/5.0 (Windows NT 6.1; ) Apple.... ",
 8     "Mozilla/5.0 (X11; CrOS i686 2268.111.0)... ",
 9     "Mozilla/5.0 (Macintosh; U; PPC Mac OS X.... ",
10     "Mozilla/5.0 (Macintosh; Intel Mac OS... "
11 ]
12 
13 user_agent = random.choice(ua_list)
14 
15 request = urllib2.Request(url)
16 
17 #也可以通过调用Request.add_header() 添加/修改一个特定的header
18 request.add_header("User-Agent", user_agent)
19 
20 # 第一个字母大写,后面的全部小写
21 request.get_header("User-agent")
22 
23 response = urllib2.urlopen(request)
24 
25 html = response.read()
26 print html

 

posted @ 2017-10-09 15:59  cuzz_z  阅读(217)  评论(0编辑  收藏  举报