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 参数之外,还可以设置另外两个参数:
data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。
headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。
User-Agent
爬虫需要伪装自己,伪装成公认的浏览器
?1 # -*- coding:utf-8 -*- ?2 import urllib2 ?3 ??4 url = "http://www.baidu.com/" ?5 headers = {"User-Agent" : "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" : "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() 添加/修改一个特定的header18 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
urllib2的基本使用
原文地址:http://www.cnblogs.com/cuzz/p/7641476.html