文档章节

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

爬虫张小呆
 爬虫张小呆
发布于 2017/05/18 10:12
字数 860
阅读 463
收藏 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
使用 Node.js 实现的网页抓取

现今,网页抓取已经是一种人所共知的技术了,然而依然存在着诸多复杂性, 简单的网页爬虫依然难以胜任Ajax轮训、XMLHttpRequest,WebSockets,Flash Sockets等各种复杂技术所开发出来的现代化...

oschina
2012/12/30
15.9K
2
php使用QueryList轻松采集JavaScript动态渲染页面

QueryList使用jQuery的方式来做采集,拥有丰富的插件。 下面来演示使用插件抓取JS动态创建的页面内容。 安装 使用Composer安装: 安装QueryList GitHub: https://github.com/jae-jae/QueryL...

土木x
2017/10/07
445
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
2018/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

嵌入式应用选择合适的微控制器

准备所需硬件接口列表 使用微控制器的基本硬件框图,准备一份微控制器需要支持的所有外设接口的列表。微控制器中有两种常见的接口类型需要列出。第一种是通信接口,这些是外围设备,如USB,S...

linuxCool
16分钟前
2
0
Group by使用

概述 GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。 GROUP BY必须得配合...

小橙子的曼曼
27分钟前
3
0
机械臂写中文

Make Me a Hanzi https://www.skishore.me/makemeahanzi/ 使用uArm Swift Pro机械臂写中文-毛笔字 https://github.com/makelove/Robot_Arm_Write_Chinese...

itfanr
39分钟前
4
0
OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 逃跑计划《一万次悲伤 (Live)》 《一万次悲伤 (Live)》- 逃跑计划 手机党少年们想听歌,请使劲儿戳(这里) 现在...

小小编辑
今天
1K
14
test

//// main.c// Test//// Created by 吕颖 on 2019/1/16.// Copyright © 2019年 carmen. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include <t......

carmen-ly
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部