刚接触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)