<p>近期發現一款通用版網絡爬蟲軟件gooseeker,其適用大部分網站的數據采集,代碼需要改動較小,真心推薦給大家.廢話就不多說了,說一下它的基本用法.</p>
現以爬取金山詞霸網站作為案例,網址:http://www.iciba.com ,輸入英文單詞,查詢對應的漢語意思
icba查詢頁面
1.定義規則
通過gooseeker定義爬取規則
2.爬取數據
<pre>
<code>
# coding:utf8
# http://www.iciba.com/apple
from urllib import request
from lxml import etree
from gooseeker import GsExtractor
def get_meaning_by_api(keyword):
icbaExtra = GsExtractor()
# 下面這句調用gooseeker的api來設置xslt抓取規則
# 第一個參數是app key,到GooSeeker會員中心申請
# 第二個參數是規則名,是通過GooSeeker的圖形化工具: 謀數臺MS 來生成的
icbaExtra.setXsltFromAPI("7e32f5e6c570fde3da60358c2ecacd9e" , "icba")
# 訪問并讀取網頁內容
base_url = "http://www.iciba.com/"
url = base_url + keyword
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
# 生成xsltExtractor對象
icbaExtra = GsExtractor()
# 調用set方法設置xslt內容
icbaExtra.setXsltFromFile("xslt.xml")
# 調用extract方法提取所需內容
result = icbaExtra.extract(doc)
# 顯示提取結果
print(str(result))
def get_meaning_by_xslt(keyword):
# 訪問并讀取網頁內容
base_url = "http://www.iciba.com/"
url = base_url + keyword
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
# 生成xsltExtractor對象
icbaExtra = GsExtractor()
# 調用set方法設置xslt內容
icbaExtra.setXsltFromFile("xslt.xml")
# 調用extract方法提取所需內容
result = icbaExtra.extract(doc)
# 顯示提取結果
print(str(result))
if name == 'main':
get_meaning_by_api('apple')
get_meaning_by_xslt('apple')
</code></pre>
3.實現效果
運行結果
接下來就是解析xml了,在此就不再陳述,到現在為止,簡易的單詞查詢功能就實現.
4.總結
gooseeker優點顯而易見,就是其通用性,對于簡單網站,其定義好規則,獲取xslt文件后,爬蟲代碼幾乎不需要修改,可結合scrapy使用,提高爬取速度;對于復雜一點的網站,可結合selenium和phantomjs使用.