文档章节

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

爬虫张小呆
 爬虫张小呆
发布于 2017/05/18 10:12
字数 860
阅读 329
收藏 0
点赞 0
评论 1

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

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

一、像人一样打开浏览器

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
博文 17
码字总数 13945
作品 0
加载中

评论(1)

码马
码马
为啥不直接不分析网络请求,没想到还有你这种操作。。
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

[问题解决] Selenium+PhantomJS使用时报错原因及解决方案

在做动态网页爬虫时用到了selenium + PhantomJS,安装好之后运行时报错: 说是 Selenium 已经弃用 PhantomJS ,请使用火狐或者谷歌无界面浏览器。 查找之后得到答案时selenium的版本问题,使用p...

Eappo_Geng ⋅ 06/13 ⋅ 0

ELK 实验(七)Elasticsearch 集群管理

Head 插件 head插件是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序。 Github: https://github.com/mobz/elasticsearch-head git clone https://github.com/mobz/e...

pcdog ⋅ 04/20 ⋅ 0

手把手教你写网络爬虫(1):网易云音乐歌单

原文出处:拓海 大家好,《手把手教你写网络爬虫》连载开始了!在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意。本文由浅入深的把爬虫技术和...

拓海 ⋅ 04/27 ⋅ 0

puppeteer入门及实践(1)

前面写过的phantomJs,研究几天后发现phantomJs虽然在业内有一定的影响力,但后继乏力,主要还是缺乏维护人员,导致项目依赖的chrome内核版本太低,无人解决的BUG太多(1000+),现在这个环境...

子非鱼_fish ⋅ 06/02 ⋅ 0

Node/PhantomJS爬虫 - Jedi-Crawler

Jedi-Crawler 是一款轻量级 Node/PhantomJS爬虫,可以动态的抓取网页内容。 安装: npm install jedi-crawler 示例代码: var jedi = require('./modules/jedi.js'),fs = require('fs'); //...

匿名 ⋅ 2016/07/27 ⋅ 0

PhantomJS的example介绍

PhantomJS安装目录下的example简单介绍 cmd命令窗口进入相应路径下使用phantomjs xxx.js命令 这里介绍几个效果比较明显的,具体代码这里不做描述 1.colorwheel.js 会生成一个colorwheel图片 ...

anlve ⋅ 01/22 ⋅ 0

搭建 vue2 单元测试环境(karma+mocha+webpack3)

从网上找了很多例子关于单元测试,都是如何新建项目的时候的添加单元测试,用vue-cli中怎么添加,但是我的项目已经生成了,不能再一次重新初始化,这时如何添加单元测试,这里面遇到了好多坑...

mgbq ⋅ 05/23 ⋅ 0

用JS搞了一个自动翻译,从此不再头疼看英文书了

小记:作为一个有追求的码农,“懒”,不一定是一个贬义词。有时候“懒”,才是进步的动力! 背景 经常遇到这样的情况,发现一本眼馋的技术书📚,却发现只有英文版。慢慢啃吗?真的很痛苦。...

gavin103 ⋅ 05/21 ⋅ 0

开源自动化测试解决方案 - AutoLine

AutoLine开源平台 AutoLine开源平台是一个开源自动化测试解决方案,基于 RobotFramework 进行二次开发,支持 RobotFramework 几乎所有的库。 特色 支持 Mac、Linux、Windows 平台 支持 Chro...

苦叶子 ⋅ 05/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开启Swarm集群以及可视化管理

在搭建的两台coreos服务器上开启swarm集群 前置条件: docker均开启2375端口 同一个局域网内 主服务器上安装Portainer容器 安装Portainer容器执行: docker run -d -p 9000:9000 --restart=a...

ykbj ⋅ 3分钟前 ⋅ 0

单例设计模式

1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 2、饿汉式单例类 在这个类被加载时,静态变量instance会被初始化,此时类的私有构造子会被调用 饿汉式是典型...

职业搬砖20年 ⋅ 8分钟前 ⋅ 0

前端基础(四):前端国际规范收集

字数:1142 阅读时间:5分钟 前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,容易起到误导作用。所以,我对搜索到的解决方案往往是存疑态度。那么,如何...

老司机带你撸代码 ⋅ 11分钟前 ⋅ 0

Failed to open/create Network-VirtualBox Host-Only

虚拟机版本 : Oracle Vm VirtualBox 5.2.12 报错时机:开网卡二,重启虚拟机报错 "Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Ada......

p至尊宝 ⋅ 14分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

阿里云云栖社区 ⋅ 17分钟前 ⋅ 0

springMVC接收表单时 Bean对象有Double Int Char类型的处理

前台ajax提交表单price为double类型 后台controller就介绍不到 400错误 前台 实体类: public class ReleaseMapIconConfig{ private String id; private long maxValue; private long minVal......

废柴 ⋅ 19分钟前 ⋅ 0

ZOOKEEPER安装

工作需要在ubuntu上配置了一个zookeeper集群,有些问题记录下来。 1. zookeeper以来java,所以首先要安装java。但是ubuntu系统有自带的jdk,需要通过命令切换java版本: $ sudo update-alter...

恰东 ⋅ 22分钟前 ⋅ 0

linux 进程地址空间的一步步探究

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间...

HelloRookie ⋅ 22分钟前 ⋅ 0

myatis #{}与${}区别及原理

https://blog.csdn.net/wo541075754/article/details/54292751

李道福 ⋅ 26分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

猫耳m ⋅ 27分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部