文档章节

利用python+selenium_phantomjs批量获取百度指数 第二步 技术细节

爬虫张小呆
 爬虫张小呆
发布于 2017/05/18 10:12
字数 860
阅读 392
收藏 0

前面说了一大串废话,这里再不贴一点干货可能要被打了。

还是按照前面说的思路来说一些技术细节吧。

一、像人一样打开浏览器

1.1、什么叫像人一样打开浏览器?

     通常我们使用爬虫进行采集的时候,就直接一句

urllib2.urlopen(url)

完事儿。

但是在这条语句的背后是“页面一闪”没有鼠标,没有加载,只是拿下来该页面的源码。而今天准备做的百度指数项目,该数据以加密背景图片展示。所以用这种方法是没有办法拿到的,必须得“像人一样”的打开浏览器。

这里使用的手段是selenium。

安装selenium

在配好pip的情况下直接

pip install selenium

就可以了,如果你还没有配好pip,请自行百度之。本篇实在是说不完了。(-。-)

二、像人一样打开页面。

2.1、获取准确的网址。已知百度指数的网址是www.index.baidu.com。要想获取相应关键词的百度指数,只需要在后面贴上对应的参数就行了。?tpl=trend&word=(urlencode后的关键词)。

这里?tpl是代表,页面对应“趋势研究”选项。

2.2、像人一样等待打开的页面加载完成。渲染出百度指 数的图片为止。

2.3、渲染完成之后你会发现,打开的页面还需要登录,猜能够进行指数的查询。所以这里需要引用selenium中

from selenium.webdriver.common.keys import Keys

三、让机器定位百度指数的x,y坐标。

这里会用到selenium driver 中的find_element_by_的方法。找到百度指数图片的x和y的坐标,把他保存在内存中。

四、使用selenium 中提供的截屏方法get_screenshot_as_file。将渲染完成的页面用图片的格式保存下来。

五、在图片中找到第三步中拿到的x,y坐标。并且按照相应的尺寸拿出百度指数的图片。但并不保存在本地,只把它放在内存里。

六、识别保存在内容中的图片的文字。

6.1、先在准备工作中拿出一部分的百度指数的数字图片,将每个数字转换成向量。最后进行配对。(较复杂,不细说了)具体方法详见    我是怎样利用python PIL将图片数字读出来的?

6.2、使用pytesseract库中的image_to_string方法,两行代码直接转成字符串。

写到这里技术细节也就基本说完了,但是这里需要考虑到一点。使用“浏览器打开页面并且等待加载完成”这种操作。比较消耗时间和内存。怎么样提高速度和减少占用的内存呢?

补充:

1、使用多线程技术threading来多线程采集,加快速度。

2、使用phantomjs浏览器,因为这个浏览器没有图形界面,所以占用的资源会相对来说少一些,而且可以让程序在无图形界面的服务器中运行。

具体代码请见    利用python+selenium_phantomjs批量获取百度指数 第三步 代码

这里只贴了一个主文件。全部代码请见我的公众号“爬虫张小呆”

有代码经验的同学请见我的github:

https://github.com/plus0318/BaiduIndex

© 著作权归作者所有

共有 人打赏支持
爬虫张小呆
粉丝 1
博文 21
码字总数 13945
作品 0
加载中

评论(1)

码马
码马
为啥不直接不分析网络请求,没想到还有你这种操作。。
Web 自动化测试与智能爬虫利器:PhantomJS 简介与实战

估计部分同学没听过这个工具,那先简单介绍下它的背景与作用。 1、PhantomJS 是什么? PhantomJS是一个基于WebKit的服务器端JavaScript API,它无需浏览器的支持即可实现对Web的支持,且原生...

大数据之路
2015/04/28
0
2
聊聊phantomjs的优化措施

序 本文主要小结一下phantomjs的优化措施 phantomjs phantomjs相当于一个后台浏览器,有点内嵌jetty的味道,通常在自动化测试或者爬虫领域用。 优化点 池化技术,避免重复启动 对于其他语言进...

go4it
2017/11/07
0
0
ubuntu 安装phantomjs、chromedriver、geckodriver

一、安装phantomjs 1.从官网下载http://phantomjs.org/download.html 2.加压 tar -zxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 3.mv phantomjs-2.1.1-linux-x86_64 /usr/local/share/phanto......

littlemesieV
04/18
0
0
PhantomJs 2 Headless Chrome

PhantomJS is dead, long live headless browsers 这是一个从PhantomJs走到Headless Chrome的故事,趟过了Highcharts的性能问题的坑,掉入过中文官方文档的错误的坑,尝试过依赖库的源码修改...

charleschu
04/14
0
0
网页前端持续集成(2) - qunit+JSCoverage+PhantomJS使用小记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/teaspring/article/details/17266247 今年早些时候为公司项目做过一些网页前端程序的持续集成(CI),在过去的几...

teaspring
2013/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
48分钟前
4
1
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
58分钟前
1
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
1
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
1
0
麒麟AI首席科学家现世

8月31日,华为发布了新一代顶级人工智能手机芯片麒麟980,成为全球首款7nm工艺手机芯片,AI方面也实现飞跃,支持人脸识别、物体识别、物体检测、图像分割、智能翻译等。 虽然如今人人都在热议...

问题终结者
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部