欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python2.7爬虫之urllib与urllib2抓取网页

程序员文章站 2022-05-04 11:42:12
...

在Python中,我们使用urllib2这个组件来抓取网页。

1、urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。
它以urlopen函数的形式提供了一个非常简单的接口。
最简单的urllib2的应用代码只需要四行。
我们来感受一下urllib2的作用:

import urllib2
response = urllib2.urlopen('http://www.baidu.com/')
html = response.read()
print html

2、urllib2用一个Request对象来映射你提出的HTTP请求。
在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,
通过调用urlopen并传入Request对象,将返回一个相关请求response对象,
这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。

import urllib2  
req = urllib2.Request('http://www.baidu.com')  
response = urllib2.urlopen(req)  
the_page = response.read()  
print the_page

3、除了"http:",URL同样可以使用"ftp:","file:"等等来替代。

4、设置Headers到http请求
有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器。
默认的urllib2把自己作为“Python-urllib/x.y”(x和y是Python主版本和次版本号,例如Python-urllib/2.7),

import urllib  
import urllib2  
url = 'http://www.baidu.com/s'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
values = {'name' : 'WHY',  
          'location' : 'SDU',  
          'language' : 'Python' }  
headers = { 'User-Agent' : user_agent }  
data = urllib.urlencode(values)  
req = urllib2.Request(url, data, headers)  
response = urllib2.urlopen(req)  
the_page = response.read()  

参考文献
1、零基础写python爬虫之使用urllib2组件抓取网页内容
2、urllib与urllib2的学习总结(python2.7.X)
3、Python自动化测试 (九)urllib2 发送HTTP Request推荐