gooseeker初体验

作者: codevs | 来源:发表于2017-02-05 23:06 被阅读0次

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

    相关文章

      网友评论

        本文标题:gooseeker初体验

        本文链接:https://www.haomeiwen.com/subject/nkcyittx.html