美文网首页大数据 爬虫Python AI Sql机器学习与数据挖掘程序猿日记
搜狗词库爬虫(1):基础爬虫架构和爬取词库分类

搜狗词库爬虫(1):基础爬虫架构和爬取词库分类

作者: padluo | 来源:发表于2018-01-21 10:17 被阅读99次

    基础爬虫架构

    基础爬虫框架主要包括五大模块:爬虫调度器、URL管理器、网页下载器、网页解析器、数据存储器。

    爬虫调度器:启动、执行、停止爬虫,统筹其他模块的协调工作。

    URL管理器:管理已爬取的URL和未爬取的URL这两个数据,提供获取新URL链接的接口。

    网页下载器:将URL管理器提供的一个URL对应的网页下载下来,存储为字符串,这个字符串传送给网页解析器进行解析。

    网页解析器:从网页下载器中获取已经下载的HTML网页,从中解析出新的URL给URL管理器,解析出有效数据提交给数据存储器。

    数据存储器:将网页解析器解析出来的数据通过文件或者数据库的形式存储。

    爬取词库分类

    词库分类的网页为http://pinyin.sogou.com/dict/,通过浏览器的开发者工具观察网页源码的结构,同级分类的源码中的href(超链接)的结构是一样的,仅仅是id或名字不同,可通过正则表达式提取网页中的分类,并用嵌套字典存储多级分类。

    得到大分类

    词库分类网页http://pinyin.sogou.com/dict/的大类链接举例:

    <a href="/dict/cate/index/167?rf=dictindex&amp;pos=dict_rcmd" target="_blank">城市信息大全</a>
    

    大类链接编译为Pattern实例,使用Pattern实例处理网页文本获取ID和名字两个group,以列表形式返回,存储为dict。

    bigCatePattern = re.compile(r"href='/dict/cate/index/(\d+).*?>(.*?)<")
    bigCateURL = 'http://pinyin.sogou.com/dict/'
    response = requests.get(bigCateURL, headers=headers)
    response.encoding = 'utf-8'
    bigCateData = response.text
    result = re.findall(bigCatePattern, bigCateData)
    

    在词库分类的网页http://pinyin.sogou.com/dict/爬取大类链接时,有一个迷惑的地方,从Chrome的开发者工具页面上看,大类链接和小类链接的URL是类似的,用Pattern实例re.compile(r'href="/dict/cate/index/(\d+).*?>(.*?)<')会匹配到大类链接和小类链接,和从开发者工具页面看到的结果是一致的,而用Pattern实例re.compile(r"href='/dict/cate/index/(\d+).*?>(.*?)<")只匹配到大类链接,和我们要达到的目标一致。

    从大分类得到小分类

    词库分类网页http://pinyin.sogou.com/dict/的小类链接举例:

    <a href="/dict/cate/index/360?rf=dictindex" target="_blank" class="">全国</a>
    

    从大分类页面http://pinyin.sogou.com/dict/cate/index/+bigCateID得到小分类的链接举例:

    <a href="/dict/cate/index/167"></a>
    ...
    <a class="citylist" href="/dict/cate/index/360">全国</a>
    

    bigCateID是大分类的id,正则表达式提取小分类的id和名字时,需要注意的是,re.compile(r'href="/dict/cate/index/(\d+)">(.*?)<'),会匹配到大分类的id,需要剔除掉。如上面的页面会同时匹配到大分类链接和小分类链接。

    smallCatePattern = re.compile(r'href="/dict/cate/index/(\d+)">(.*?)<')
    smallCateBaseURL = 'http://pinyin.sogou.com/dict/cate/index/'
    

    您可能还想看

    Python爬虫实战之爬取链家广州房价_01简单的单页爬虫

    Python爬虫实战之爬取链家广州房价_02把小爬虫变大

    Python爬虫实战之爬取链家广州房价_03存储

    Python爬虫实战之爬取链家广州房价_04链家的模拟登录(记录)


    微信公众号「数据分析」,分享数据科学家的自我修养,既然遇见,不如一起成长。

    数据分析

    转载请注明:转载自微信公众号「数据分析」


    读者交流电报群:

    https://t.me/sspadluo

    读者交流群

    相关文章

      网友评论

        本文标题:搜狗词库爬虫(1):基础爬虫架构和爬取词库分类

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