网络爬虫 - 7 requests的使用与selenium自动化测试工具

1.selenium+phantomjs

(1)selenium概念: 是一个浏览器的自动化测试工具,通过selenium提供的一些方法可以去操作浏览器,让浏览器做 一些自动化的工作
(2)selenium操作谷歌浏览器: 主要核心:而是selenium操作谷歌浏览器驱动,通过驱动再来操作浏览器

谷歌浏览器驱动下载地址
    http://chromedriver.storage.googleapis.com/index.html
    http://npm.taobao.org/mirrors/chromedriver/
谷歌驱动和谷歌浏览器版本关系映射表
    http://blog.csdn.net/huilan_same/article/details/51896672
安装selenium:pip install selenium



【注】通过selenium操作浏览器的时候,一定要记得停顿,因为是真正的上网过程,要执行其中很多的请求,所以使用selenium非常的慢,效率低.

(3)selenium操作有界面的目的
phantomjs概念: 是一款浏览器,它是一款无界面浏览器。就是专门用来写爬虫代码用的。肯定有浏览器的功能,可以将html、css、图片、js给你显示成图文并茂的形式,phantomjs可以执行网页中的js代码。
网页的呈现形式,很多情况,html中的内容不是直接就有的,而是需要执行js代码,动态的给生成的
(a)捕获接口,分析接口,然后向接口发送请求,得到数据,得到的数据一般都是json格式,然后再解析json数据即可.
(b)捕获不到接口,或者捕获到接口,看不懂接口参数,使用大招,selenium+phantomjs,因为它的效率低,慢.

(4)selenium如何操作phantomjs?
见代码31-33
模拟滚动条滚动到底部
见代码31-33
得到执行js之后的代码
browser.page_source

2.headlesschrome

​ 谷歌进军无界面模式,phantomjs退出了,不在维护了。火狐也有,ie也有.
如果windows,要求谷歌版本在60+以上
如果linux,要求谷歌版本在59+以上
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument(‘–headless’)
chrome_options.add_argument(‘–disable-gpu’)
chome_options.add_argument((‘–proxy-server=http://’ + ip))

3.requests的用法

(1)requests概念: 是python的第三方库,这个库和urllib库是一个功能,模拟发送http请求,由于urllib库非常的不方便,所以写了这么一个库, 由林纳斯脱袜子(林纳斯·托瓦兹 -linux内核-git)

(2)基本用法: 参考博文:http://docs.python-requests.org/zh_CN/latest/index.html

安装包:pip install requests
    get请求
带参数get请求:
    data是一个原生字典
    r = requests.get(url=url, headers=headers, params=data)
带参数post请求:
    r = requests.post(url=url, headers=headers, data=data)


响应对象
    r.text                字符串内容
    r.content             字节内容
    r.status_code         状态码
    r.url                 请求url
    r.headers             响应头
    r.encoding='utf8'     指定字符集
    r.encoding            查看字符集
    r.json() == json.loads(r.text)  将json数据转化为python对象

代理功能: 见代码37

会话机制: 和urllib里面一样。
创建一个会话:   s = requests.Session(),发送请求都使用s来进行发送
              s.post()   s.get()

异常处理:
    requests.exceptions
    Timeout : 请求超时
    ConnectionError :主机不存在或者拒绝链接
    HTTPError :找不到文件资源

取消ssl证书验证:
    verify=False
    from requests.packages import urllib3
    urllib3.disable_warnings()

4.requests使用案例

爬取www.chengdu.8684.cn网的公交车信息: 见代码41

猜你喜欢

转载自blog.csdn.net/hanbo6/article/details/81637364