标签:
当当当~第三篇博客开始啦~
这次的话题是数据抓取。终于到了核心部分的探讨,我的心情也是非常激动啊!如果大家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