python3爬虫---百度百科(疾病信息)

本文档记录了一次Python3爬虫的改进过程,旨在解决之前爬虫存在的问题,如信息抓取不全和代码模块化不足。通过分析百度百科疾病页面,设计了爬虫结构,包括url管理、HTML下载和解析等模块。在实施过程中,爬取了疾病链接,避免了重复爬取,并将数据保存到.xlsx文件。在运行中遇到了命名冲突、openpyxl表格计数错误和文件操作问题,这些问题已得到解决。
摘要由CSDN通过智能技术生成

一、问题描述

之前爬虫过程主要存在两个个问题:
(1)爬取到网页源码之后,没有解析,直接利用正则表达式抓取信息,这样做起来比较费劲,容易造成信息抓取不全面,同时,所有页面链接都是根据链接规律自建的,没有做到自动爬取。
(2)代码未做模块化处理,检查错误比较难。
在改善了上述两个问题之后,重新爬取了百度百科中疾病信息库,并保存在.xlsx文件中

二、网页分析及爬虫结构

1、网页分析

爬虫入口链接:root_url=“http://baike.baidu.com/fenlei/%E7%96%BE%E7%97%85”
爬虫入口页面:
在这里插入图片描述
红圈对应源码位置为该疾病链接,蓝圈对应位置为每个分页链接
因此本次爬虫的过程为:依次爬取每页所有疾病链接,进而根据疾病链接爬取疾病信息

2、爬虫结构

(1)url 集合
urls_0=set():主页链接集合(未爬取)
urls_1=set():疾病页面链接集合(未爬取)
new_url_0:主页链接(即将爬取)
new_url_1:疾病链接(即将爬取)
old_urls=set():所有已爬取链接集合(防止重复爬取)

(2)模块
main: 主程序(调度,保存数据)
url_manager :url管理器(url保存,提取,查空)
html_downloader :html下载器(下载HTML)
html_parser :html解析器(提取主页内疾病链接和疾病页面内所需信息)

(3)爬取过程
在这里插入图片描述

三、具体模块代码

为方便查看,将主模块放在最后

1、url_manager :url管理器(url保存,提取,查空)

class UrlManager(object):
    def __init__(self):
        self.new_urls_0=set()#主页链接集合(未爬取)
        self.new_urls_1=set()#疾病链接集合(未爬取)
        self.old_urls=set()#已爬取链接集合

    #单一url添加到url_set中  
    def add_new_url(self,url,url_set):
        if url is None:
            return 
        if url not in url_set and url not in self.old_urls:
            url_set.add(url)

    #多个ur
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值