美文网首页
百度百科爬虫

百度百科爬虫

作者: 温小八 | 来源:发表于2018-11-20 20:35 被阅读0次

本次爬取的是百度百科网络爬虫词条以及相关的标题、摘要和链接等信息

一、运行流程

爬虫框架的动态运行流程如下:


运行流程

其中,
爬虫调度端主要负责统筹其他四个模块的协调工作;
URL管理器主要负责管理URL链接,维护已经爬取的URL集合和未爬取的URL集合,提供获取新URL链接的接口;
网页下载器则根据提供到的URL下载网页,并提供下载成功的网页数据;
网页解析器根据提供的网页数据,解析新的URL链接和词条标题、摘要,返回相关数据给调度端;
数据存储器通过mongo数据库的形式保存给到的数据;

二、具体代码介绍

1、UrlManager即URL管理器

    def has_new_url(self):
        return len(self.new_urls)

    def get_new_url(self):
        if(self.has_new_url()):
            new_url = self.new_urls.pop()
            self.old_urls.add(new_url)
            return new_url
        return None

    def add_new_url(self, url):
        if url is None:
            return
        if url not in self.new_urls and url not in self.old_urls:
            self.new_urls.add(url)

has_new_url() 判断是否还有未爬取的URL集合,调度器会根据该函数判断是否要继续进行爬虫操作,未爬取的URL集合为空的时候,爬虫会自动停止;
get_new_url() 从未爬取的URL集合中获取一个URL,并将其从未爬取的URL集合中删除,添加到已爬取的集合中,调度器会让下载器根据该URL下载网页数据并进行数据的爬取和保存;
add_new_url() 添加到未爬取的URL集合时,必须判断是否有重合的URL,以免重复爬虫了。
2、HtmlDownloader为网页下载器

    def download(self, url):
        if url is None:
            return None
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}
        r = requests.get(url=url, headers=headers)
        if r.status_code == 200:
            r.encoding = 'utf-8'
            return r.text
        return None

注意r.encoding,因为我是在window下编码的,下载的网页数据中,中文是乱码显示的,添加了r.encoding后中文就正常显示了,参考链接:https://jingyan.baidu.com/article/2c8c281dbb969d0008252a80.html
3、HtmlParser是网页解析器
(1)新的URL集合
links = html.find_all('a', href=re.compile(r'/item/'))
匹配的新的URL如下:
只要链接中包含item,都添加到新的未爬取的URL集合中

URL匹配
(2)获取摘要和词条标题
    def _get_new_data(self, page_url, html):
        data={}
        # 获取词语的简介内容
        data['summary'] = (html.select('.lemma-summary')[0].get_text()).strip()
        data['url'] = page_url
        # 词语
        data['title'] = html.select('dd h1')[0].get_text()
        return data
解析的字段

三、运行结果

mongo 数据库保存每个词条的标题、摘要和百度链接


运行结果

百度百科爬虫代码

相关文章

网友评论

      本文标题:百度百科爬虫

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