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