<p>近期发现一款通用版网络爬虫软件gooseeker,其适用大部分网站的数据采集,代码需要改动较小,真心推荐给大家.废话就不多说了,说一下它的基本用法.</p>
现以爬取金山词霸网站作为案例,网址:http://www.iciba.com ,输入英文单词,查询对应的汉语意思
1.定义规则
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使用.