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