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


    分类: Python/Ruby


        数据抓取是一门艺术,和其他软件不同,世界上不存在完美的、一致的、通用的抓取工具。为了不同的目的,需要定制不同的代码。不过,我们不必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:Python27Scripts”目录添加入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之心得
     
  • 相关阅读:
    软件工程实践项目课程的自我目标
    个人作业3——个人总结(Alpha阶段)
    结对编程2——单元测试
    个人作业2——英语学习APP案例分析
    结对编程1
    个人作业1——四则运算题目生成程序(基于控制台)
    关于在写5-3路上的一点趣事
    第一次课堂作业
    第四次作业
    面向对象程序设计课-第三次作业(改)
  • 原文地址:https://www.cnblogs.com/firstdream/p/5123019.html
Copyright © 2020-2023  润新知