爬虫手册(二):urllib和requests

(一)urllib

python爬虫的基础框架之一,也是内置库之一的urllib,是我入门时学习的爬虫方法。
在python2中,urllib要和urllib2一起使用。但在python3中,这两个库合为一个库了,urllib2变成了urllib.request。
先来段代码吧:

import  urllib
url='https://www.douban.com'
#urllib2中的Request和urlopen都合并到urllib.request下
req=urllib.request.Request(url)
response=urllib.request.urlopen(req,timeout=10)
print(response.read().decode('utf-8'))

执行这段代码后,就会得到一些充满着

的数据,这就是网页的数据。

而这个是最基础的,其实在爬取很多网页时都会因为一些反爬虫手段而失效。
比较简单的反爬虫手段:浏览器检验
因为我们用浏览器去打开网页和用爬虫去打开网页时不一样的,如果不伪装一下,发送header数据过去,网站那边会因为识别是爬虫工具而禁止数据的泄露。这时候就要加一个爬虫头header,以伪装成是浏览器。

header={}
header['user-agent']=''Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36''
req=urllib.request.Request(url,headers=headers)

在上面加上这些东西,就可以更好地去爬取了。
好了urllib就说到这里了。现在我主要使用的爬虫方法是requests,所以对urllib已经很久没有使用了。
而且urllib的方法比较底层,有时候用起来比较麻烦。

(二)requests

requests 是python爬虫比较著名的一个第三方库,可以直接使用pip 安装

import requests
url='https://www.douban.com'
user_agent = (''Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'')
headers = {
            "User-Agent"      : user_agent,
            'Connection'      : 'keep-alive',
            'cache-control'   : 'max-age=0',
            'Accept'      :'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Language' : 'zh-CN,zh;q=0.9',
        }
req=requests.get(url=url,headers=headers)
print(req.text)

这边还顺便把这个headers 加多点数据,更好地伪装成一个浏览器。

#不同的返回内容的请求
req.text   #网页内容
req.content   #图片 视频二进制内容
req.json    ##返回json格式网页内容
req.cookies  #返回cookies
req.status_code  #返回状态码
req.headers  #返回头信息
req.url   #返回请求的url
req.apparent_encoding    #返回网页编码格式
req.history       #返回历史记录

下一节,我将会用一个例子,讲述爬虫的工作中get和post的区别,顺便说明headers为何要这样子写。

你可能感兴趣的:(爬虫手册(二):urllib和requests)