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

基础爬虫架构

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

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

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

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

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

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

爬取词库分类

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

得到大分类

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

城市信息大全

大类链接编译为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/的小类链接举例:

全国

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


...
全国

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链家的模拟登录(记录)


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

搜狗词库爬虫(1):基础爬虫架构和爬取词库分类_第1张图片
数据分析

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


读者交流电报群:

https://t.me/sspadluo

搜狗词库爬虫(1):基础爬虫架构和爬取词库分类_第2张图片
读者交流群

你可能感兴趣的:(搜狗词库爬虫(1):基础爬虫架构和爬取词库分类)