使用Selenium模拟浏览器,实现自动爬取数据
最近需要在一個(gè)網(wǎng)站下載一批數(shù)據(jù)。但是輸入一個(gè)查詢,返回三四萬(wàn)條結(jié)果,每次只能導(dǎo)出500條,而且每次還得輸入下載條目的范圍!這樣點(diǎn)擊下載,還不要了我的老命。于是乎想自動(dòng)化這個(gè)過(guò)程。
我的需求主要是兩點(diǎn):1. 要求自動(dòng)化程度高。最好有直接模擬瀏覽器鼠標(biāo)和鍵盤動(dòng)作的成熟接口,比如在文本框輸入,選擇下拉列表,單選框,復(fù)選框,點(diǎn)擊按鈕等。2. 不要求效率。因?yàn)槲乙臄?shù)據(jù)量相對(duì)來(lái)說(shuō)很小。3. python下的框架。因?yàn)槠綍r(shí)幾乎主要用python。
我不太懂網(wǎng)站技術(shù),和網(wǎng)站沾邊的經(jīng)驗(yàn)只有兩個(gè):開發(fā)過(guò)一個(gè)很簡(jiǎn)單安卓的客戶端,用python的scrapy框架寫過(guò)爬蟲來(lái)自動(dòng)爬取新聞。所以了解一些客戶端和服務(wù)端基本的交互方式、了解如何分析網(wǎng)頁(yè)源代碼、了解xpath語(yǔ)法。
剛開始針對(duì)這個(gè)問題,我連搜啥都不太清楚。知乎的這篇文章提供了很多有用信息:“Python 爬蟲如何獲取 JS 生成的 URL 和網(wǎng)頁(yè)內(nèi)容?” 順著它我又權(quán)衡了很多方法,最后選擇了Selenium。主要優(yōu)點(diǎn)是學(xué)習(xí)成本極小,代碼實(shí)現(xiàn)快。缺點(diǎn)是爬取效率低。想要高效率的朋友,就要花一些時(shí)間學(xué)習(xí)更復(fù)雜的工具包了。
網(wǎng)站技術(shù)
想要自動(dòng)爬取網(wǎng)頁(yè),得了解一些基本的知識(shí),這樣做起來(lái)更快。這里簡(jiǎn)單介紹一下相關(guān)知識(shí)。
1. Request/response
request是客戶端向服務(wù)端發(fā)起請(qǐng)求。輸入一個(gè)網(wǎng)址對(duì)應(yīng)一個(gè)request動(dòng)作,這是最直觀的。爬取靜態(tài)網(wǎng)頁(yè)的內(nèi)容,只要知道網(wǎng)址就可以了。但是現(xiàn)在的網(wǎng)頁(yè)很多都是動(dòng)態(tài)的,鼠標(biāo)指向或者點(diǎn)擊網(wǎng)頁(yè)中某些元素也會(huì)觸發(fā)request動(dòng)作,從而使網(wǎng)頁(yè)動(dòng)態(tài)更新
總結(jié)
以上是生活随笔為你收集整理的使用Selenium模拟浏览器,实现自动爬取数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flink从入门到精通100篇(一)-如
- 下一篇: 用Tableau画3D模型之四(放弃篇)