gooseeker初体验

<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使用.

推荐阅读更多精彩内容