码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-07-23 00:12:16      阅读:410      评论:0      收藏:0      [点我收藏+]

标签:

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

  这次的话题是数据抓取。终于到了核心部分的探讨,我的心情也是非常激动啊!如果大家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/Yirugao/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)

技术分享

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

标签:

原文地址:http://www.cnblogs.com/Jerrold-Gao/p/4668924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!