urllib2模块的基本使用

刚接触Python爬虫,首先使用的urllib2这个库,记录下使用的要点。由于是初学,有不对的地方等发现了再来更正~ *
使用的Python3.6的urllib2模块(urllib2.request)
在Python2.x中就是urllib2

urlopen :

向指定的URL发送请求,并返回服务器响应的文件对象
例:

import urllib2.repuest

respose = urllib2.repuest.urlopen("http://www.baidu.com")

#类文件对象支持 文件对象的操作方法,可以用read()方法读取全部内容
html = respose.read()
#打印输出
print(html)
  • 这样就把网页的全部数据都爬下来了,是不是很简单

但是如果需要执行更复杂的操作,比如增加HTTP爆头,就需要创建一个Request 实例来作为urlopen()的参数
在urlopen()之前 先使用Request()

#Request实例对象
request = urllib2.request.Request("http://www.baidu.com")
#然后再使用urlopen()
response = urllib2.request.urlopen(request)

Request实例,除了必要的url参数,还有两个可选的参数
data(默认空):url携带提交的数据,
headers(默认空):包含需要发送的http报头的键值对,字典格式

User-Agent

但是这样直接用urllib2给一个网站发送请求的话,确实略有些唐突了,就好比,人家每家都有门,你以一个路人的身份直接闯进去显然不是很礼貌。而且有一些站点不喜欢被程序(非人为访问)访问,有可能会拒绝你的访问请求。

但是如果我们用一个合法的身份去请求别人网站,显然人家就是欢迎的,所以我们就应该给我们的这个代码加上一个身份,就是所谓的User-Agent头

  • 说白了 就是让我们利用给出的参数,伪造成各式各样浏览器发送数据的样子,骗过服务端的检查。
import urllib2.request

url = "http://www.baidu.com"

#IE 9.0 的 User-Agent,包含在 ua_header里
ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} 

#  url 连同 headers,一起构造Request请求,这个请求将附带 IE9.0 浏览器的User-Agent
request = urllib2.request.Request(url, headers = ua_header)

# 向服务器发送这个请求
response = urllib2.urlopen(request)

html = response.read()
print(html)
这样我们就可以通过Python自带的urllib2模块来完成一个小爬虫了,而且还使用了User-Agent模拟了浏览器的访问,骗过了服务端。哈哈(小白式大笑...hhh)

你可能感兴趣的:(urllib2模块的基本使用)