838
gooseeker集搜客
為采集動態網頁安裝和測試Python Selenium庫
1,引言
上一篇《為編寫網絡爬蟲程序安裝Python3.5》中測試小例子對靜態網頁做了一個簡單的采集程序,而動態網頁因為需要動態加載js獲取數據,所以使用urllib直接openurl已經不能滿足采集的需求了。這裏我們使用selenium庫,通過它我們可以很簡單的使用瀏覽器來為我們加載動態內容,從而獲取采集結果。
在很多案例中,Selenium與PhantomJS搭配采集動態網頁內容(可以參看我以前發表的案例文章),直接與Firefox或者Chrome搭配,可以應對一些更加複雜的采集情形,比如,在防爬方麵,直接驅動普通瀏覽器更不容易被識別成爬蟲。所以,本文講解與Firefox搭配,開發難度並沒有增加。
Python版本:Python3
2. 安裝selenium庫
使用快捷鍵win + R或右鍵開始選擇運行,輸入cmd回車,打開命令提示符窗口,輸入命令:pip install selenium
3. 以亞馬遜商品為例的一個簡單爬蟲
3.1 引入Gooseeker規則提取器模塊gooseeker.py
(下載地址: https://github.com/FullerHua/gooseeker/tree/master/core), 自定義存放目錄,這裏為E:\demo\gooseeker.py
引入GooSeeker規則提取器,就省去手工編寫XPath或者正則表達式的麻煩,用直觀標注的方式自動生成采集規則後,通過API加載和使用采集規則。操作過程請參看《1分鍾快速生成用於網頁內容提取的xslt》。
下麵的代碼就是使用了API,所以看不到冗長的XPath和正則表達式規則,代碼中的API key和抓取規則名可以直接使用,這是公共的測試用的規則。
3.2 在提取器模塊gooseeker.py同級目錄下創建一個.py後綴文件
如這裏為E:\Demo\second.py,再以記事本打開,敲入代碼:
# -*- coding: utf-8 -*-
# 使用gsExtractor類的示例程序
# 以webdriver驅動Firefox采集亞馬遜商品列表
# xslt保存在xslt_bbs.xml中
# 采集結果保存在result-2.xml中
import os
import time
from lxml import etree
from selenium import webdriver
from gooseeker import GsExtractor
#驅動火狐
driver = webdriver.Firefox()
# 訪問並讀取網頁內容
url = "https://www.amazon.cn/b/ref=s9_acss_bw_ct_refTest_ct_1_h?_encoding=UTF8&node=658810051&pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=merchandised-search-5&pf_rd_r=WJANDTHE4NFAYRR4P95K&pf_rd_t=101&pf_rd_p=289436412&pf_rd_i=658414051"
#開始加載
driver.get(url)
#等待2秒,更據動態網頁加載耗時自定義
time.sleep(2)
# 獲取網頁內容
content = driver.page_source.encode('utf-8')
# 獲取docment
doc = etree.HTML(content)
# 引用提取器
bbsExtra = GsExtractor()
bbsExtra.setXsltFromAPI("31d24931e043e2d5364d03b8ff9cc77e", "亞馬遜圖書_test") # 設置xslt抓取規則
result = bbsExtra.extract(doc) # 調用extract方法提取所需內容
# 當前目錄
current_path = os.getcwd()
file_path = current_path + "/result-2.xml"
# 保存結果
open(file_path,"wb").write(result)
# 打印出結果
print(str(result).encode('gbk','ignore').decode('gbk'))
3.3 執行second.py,打開命令提示窗口,進入second.py文件所在目錄,輸入命令 :python second.py 回車
注:這裏是以驅動Firefox為例,所以需要安裝Firefox,若未安裝可以去往Firefox官網下載安裝
3.4 查看保存結果文件,進入second.py文件所在目錄,找到名稱為result-2的xml文件
4. 總結
安裝selenium,由於網絡原因失敗了一次,後麵再次安裝時才成功,如果碰到多次超時而安裝失敗,可以嚐試連接vpn後再使用pip命令安裝。
下一篇《快速製作規則並獲取提取器api》將會講解:快速的將一個網頁結構生成規則並通過規則Api方式得到需要采集的結果。
5. 文檔修改曆史
2016-10-11:V1.0
6. 集搜客GooSeeker開源代碼下載源
GooSeeker開源Python網絡爬蟲GitHub源
若有疑問可以或
最後更新:2017-01-09 14:08:11