• 利用Selenium制作python数据抓取,以及对Selenium资源介绍


    当当当~第三篇博客开始啦~

      这次的话题是数据抓取。终于到了核心部分的探讨,我的心情也是非常激动啊!如果大家baidu或者google(如果可以的话)数据抓取或者data crawling,将会找到数以千计的例子。但是大多数的代码非常的冗长,并且许多代码还是抓取静态数据之后,对动态JS写成的数据却毫无办法。或者,利用HTML解析网址后,再找到JS写的数据页面来寻找到所想要的数据。  

      但是!不知各位是否有发现过,如果打开chrome或者safari或者各种浏览器的审查元素。网页上能看到的数据,其实都会载到里面。可当转移到源代码的时候,JS写成的数据却都消失了!可我们为什么要从源代码中找数据,却不直接从审查元素中找呢?带着这个问题,我历经千险,穿越了各种国外的社区论坛以及插件包,终于找到了答案。

      首先介绍今天的主角!

      既然是interpreter,Selenium是可以按照我第一篇博客的做法下载的。PhantomJS呢,可以直接通过我给的链接里面进行下载。当两个都安装完毕,就能正式地开始进行数据抓取了。当然例子就是我的博客啦~

      首先上范例代码

    #-*-coding:utf-8-*-#
    from
    selenium import webdriver def crawling_webdriver(): #get local session of PhantomJS driver = webdriver.PhantomJS(executable_path='/Users/***/phantomjs/bin/phantomjs', port=65000) driver.set_window_size(1024, 768) #optional driver.get("http://www.cnblogs.com/Jerrold-Gao/") # Load page #start crawling data data=driver.find_element_by_id("sidebar_scorerank").text
      #print to check my result print(data)
      #quit the driver driver.quit() if __name__ == '__main__': crawling_webdriver()

      

      是否有被python精简的语言惊叹到呢?这就是python插件功能包的强大之处。

      我需要提醒几个注意点:一、PhantomJS的路径和端口是一定要寻找的。在国内某篇文章中不知为何去掉了路径和端口,神奇的是,居然程序还能运行。我试了几回,都无法像它一样运行。二、请务必在最后quit driver,不然对内存的占用是会越来越大的。

      这样的代码就可以对本页面的数据进行抓取了,结果是:

      可是,如果是想抓取超级链接呢?通过以上的代码,依样画葫芦,仍然是找不出来的。这里有个简单的技巧:

    #crawling a link
        data=driver.find_element_by_id("homepage1_HomePageDays_DaysList_ctl00_DayList_TitleUrl_0")
        url=data.get_attribute("href")

      将id属下的区块,提取出href的部分,就能找到链接了。这里找到的是:

    =================================这里是另起主题的分割线===================================

      关于Selenium,无论是国内还是国外,都算火过一阵子了。比起openpyxl,它在主页上的注释也清晰很多。这里介绍几个我觉得比较好用的资源。

      由于它官网莫名掉线,所以首当其冲的资源就是python-Selenium站了,上面有很多对代码的注解,十分实用。

      其次,对国内的同学来说,最好的网站便是中文站了,虽然人数不是很多,但是讨论还是挺丰富的。

      最后,便是万能的stackoverflow啦,国内上这个站速度总是有点慢,其实还是很怨念的。

    =================================我是来返场的分割线======================================

    本日吐槽:有次和友人逛博物馆。朋友说,博物馆其实好奸诈,一大面雪白的墙挂一幅画,你看到画后也不会立刻有比较对象,就会觉得“这好有艺术感啊”的奇妙感觉。我回答说,就和西欧的料理一样嘛,一个大白盘摆一小叠食物,感觉就会很精致的。朋友深表赞同地说,对啊,这么大的留白,摆什么都好看。我低头轻轻笑了一下,说,什么时候把我的代码也挂上去。

              在家随便做的法式甜酒鸭胸肉(Magret de Canard)

  • 相关阅读:
    出现“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。”这样的错误!
    关于sql server 2008过期导致 MSSQLSERVER服务就无法启动,手动启动就报告错误代码17051。
    ASP.NET 回调技术(CallBack)
    Asp.net中的ajax回调模式(ICallbackEventHandler)
    CKEditor4.1和CKFinder2.3.1 for Mvc4最新 破解版,结合 打造"帅"的编辑器 For .Net
    .net_ckeditor+ckfinder的图片上传配置
    文件上传限制大小 dotnet/C#
    C#.Net 上传图片,限制图片大小,检查类型完整版
    图片上传代码(C#)
    C#中操作xml文件(插入节点、修改、删除)
  • 原文地址:https://www.cnblogs.com/Jerrold-Gao/p/4668924.html
Copyright © 2020-2023  润新知