閱讀838 返回首頁    go 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

  上一篇:go 1分鍾快速生成用於網頁內容提取的xslt
  下一篇:go 經濟和金融工作的人通過什麼渠道獲得數據資源?