数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置

数据抓取是一门艺术,和其他软件不同,世界上不存在完美的、一致的、通用的抓取工具。为了不同的目的,需要定制不同的代码。不过,我们不必Start from Scratch,已经有许多的基本工具、基本方法和基础框架可供使用。不同的工具、不同的方法、不同的框架的特点也不同。了解这些工具、方法和框架是首要任务,接下来就需要明白它们的差异都在哪里、什么情境该用什么东东,最后才是析出规则、编写代码、运行程序来抓取数据。所以说,其实数据抓取的学习路线,不但很长而且很杂。

    为了一个特定的目的,我需要爬取Google的搜索数,和其他情况不同:人家是特定关键词,一页一页地爬结果;我的是N多关键词,一次一个地搜索,只需要返回的搜索条数。事实上,一共有153个关键词,但每个关键词都需要和所有关键词握手组配成一对待检词组。于是,大家可以试想一下,一个153行、153列的大表格,每一个空白都等着填,这就将是153*153=23409次,也就是约23409/2=11704次,经测试每爬取一个共词页面的结果并存入Excel,需要花费4秒的时间。这意味着,以单人单线程的方式需要11704*4/3600=13个小时,才能跑完。

    这些内容我还会在后续博文中详述,现在先介绍上述目的情境下我使用的技术框架及其安装配置过程。

一、技术架构
    [Python2.7 + Pip + Selenium + Phantomjs]
    Selenium+Phantomjs,最初这对兄弟不是一家的,后来发现二者志趣相投、互有好感,于是结拜为兄弟,住进了Selenium家里。(这种说法有待商榷)
    看看介绍:
    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Chrome等。
    Phantom JS是一个服务器端的 JavaScript API 的 WebKit。其支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。

二、环境搭建
   (1)安装Python从略,我用的版本是2.7.4(WinXP和Win7的32位平台)。
   (2)由于发现Pip比easy_install优秀,我便使用我已经安装的easy_install来安装pip。

  1. easy_install pip

    如图所示:

   (3)安装Phantomjs。
   到Phantomjs的官方网站http://phantomjs.org/download.html,下载“Download phantomjs-1.9.0-windows.zip (7.1
MB) ”。随后打开这个压缩包,将phantomjs.exe这一个文件解压到系统路径所能找到的地方,由于之前我已经将“C:\Python27\Scripts”目录添加入PATH之中,所以我就直接解压到这个目录。如图所示:

     至此,就已经在Win的环境下配置好了环境。

   三、测试
    随意新建一个文件,并加入如下代码:

  1. from selenium
    import webdriver
  2. driver = webdriver.PhantomJS()
  3. driver.get('www.baidu.com')
  4. data = driver.find_element_by_id('cp').text
  5. print data

    Check Out,看看是不是这个结果:

    其实,我一直不喜欢弹出来的DOS黑框,觉得这东东太影响视觉而且可能更耗时,但是在我看了官方DOC后:

   我发现,是不能直接藏匿DOS弹框的。So,只好这般啦。
   
    OK,it's time to "Enjoy yourself"......

    也请参看下文:《数据抓取的艺术(二):数据抓取程序优化及抓取Google之心得

时间: 2024-10-29 09:42:20

数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置的相关文章

数据抓取的艺术(三):抓取Google数据之心得

 本来是想把这部分内容放到前一篇<数据抓取的艺术(二):数据抓取程序优化>之中.但是随着任务的完成,我越来越感觉到其中深深的趣味,现总结如下:    (1)时间      时间是一个与抓取规模相形而生的因素,数据规模越大,时间消耗往往越长.所以程序优化变得相当重要,要知道抓取时间越长,出错的可能性就越大,这还不说程序需要人工干预的情境.一旦运行中需要人工干预,时间越长,干预次数越多,出错的几率就更大了.在数据太多,工期太短的情况下,使用多线程抓取,也是一个好办法,但这会增加程序复杂度,对最终数

数据抓取的艺术(二):数据抓取程序优化

      续前文:<数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置>. 程序优化:第一步开始: for i in range(startx,total):     for j in range(starty,total):         BASE_URL = createTheUrl([item[i],item[j]])         driver.get(BASE_URL)         driver = webdriver.PhantomJS()    

python phantomjs+ selenium2 抓取动态js网页(版本python2.7+)

1.下载phantomjs linux版本      解压即可     单独使用方法:../bin/phantomjs create_img.js    xxx.com(可选)     示例,抓取网页截图:    建立一个pageload.js文件 编写以下js var page = require('webpage').create(); page.open('http://cuiqingcai.com', function (status) { console.log("Status: &q

抓取数据-httpclient怎么抓取最终跳转的网站数据?

问题描述 httpclient怎么抓取最终跳转的网站数据? 公司要做个内部系统,抓取某个网站的数据,而那个网站是抓取淘宝的数据. 其中有个页面很复杂,搜索关键词后,跳转到当前页面,当前页面有个javascript 跳转淘宝请求数据. (当我在他们网站搜索时,他们 是抓取淘宝数据的缓存到自己的网站,然后展现出来.当我直接在地址栏拼接他们获取数据的地址时,发生了跳转,跳到淘宝去了.) 重点那个js的那个地址是他们网站的地址,然后再跳转到淘宝请求数据的 我的httpclient怎么抓到跳转的最终页面,

base64-网页显示了数据,抓取网页源码无法找到数据

问题描述 网页显示了数据,抓取网页源码无法找到数据 用java抓取某个网站登录后的数据,登录成功,但是貌似遇到数据加密,table里面的数据都是由js生成,而且我有看到有引用base64.js和rsa.js,研究了几天还是没办法抓取到数据,前辈们能不能给个指导路线,网址是http://dev.10086.cn/datau/modules/views/dataana.jsp 解决方案 fiddler先抓包,然后分析浏览器请求的参数和地址,在你的程序中照着做.

php实现爬取和分析知乎用户数据_php实例

背景说明:小拽利用php的curl写的爬虫,实验性的爬取了知乎5w用户的基本信息:同时,针对爬取的数据,进行了简单的分析呈现. php的spider代码和用户dashboard的展现代码,整理后上传github,在个人博客和公众号更新代码库,程序仅供娱乐和学习交流:如果有侵犯知乎相关权益,请尽快联系本人删除. 无图无真相 移动端分析数据截图 pc端分析数据截图 整个爬取,分析,展现过程大概分如下几步,小拽将分别介绍 curl爬取知乎网页数据 正则分析知乎网页数据 数据数据入库和程序部署 数据分析

fpga 网口通信-FPGA向PC网口发送数据,已按UDP封装,但用抓包工具找不到发送的数据包,怎么破啊?

问题描述 FPGA向PC网口发送数据,已按UDP封装,但用抓包工具找不到发送的数据包,怎么破啊? 问题如标题所示, 采用的是XILINX的virtex 6芯片 网口程序在原本V6核里面的tri emac IP core中添加自己的UDP封装 抓不到发送的数据包 直接用IP核附带的example程序也不行 求大神指导啊......

在linux下,python怎么才能抓到网卡上的所有TCP数据包?

问题描述 在linux下,python怎么才能抓到网卡上的所有TCP数据包? 网卡已经设置为混杂模式,能够收到mac不是本机mac的数据包,但是程序只能收到和本机ip一样的数据包,不能收到和本机ip不一样的数据包,求助.代码如下: sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) packet_base = sock.recvfrom(1024)[0] print "receive a packet

从数据的角度研究艺术市场?

有没有人从数据的角度研究过艺术市场?比如从数据角度分析艺术品的合理定价,或者从交易数据来分析单个艺术品的价格走势,以及以数据来分析某个艺术家? 有的.我就一直在做相关领域的研究工作,我创立了一个叫做守望者的工作室,专门从事艺术市场的数据挖掘.分析工作,并提供相关领域的定制研究和咨询服务. 基于数据的艺术市场研究 我们的研究方法是:首先,收集艺术市场的原始数据,比如艺术家档案.展览新闻.拍卖结果等,然后在这些原数据的基础上,把它们合并到一个统一的数据库中,进行细致的数据清洗工作.通常这个步骤叫做数