基于python利用爬虫爬取网页教程

本文介绍了如何使用Python构建一个简单的爬虫,包括url管理器、网页下载器、HTML解析器和HTML输出器四个部分。通过实例详细讲解了爬取百度百科Python词条页面的过程,涉及url管理、网页下载、数据解析和输出。
摘要由CSDN通过智能技术生成

目标:利用python做爬虫爬取百度百科python词条页面的数据

爬虫结构运行的流程:




url管理器:

              管理带抓取url集合和已抓取url集合

              防止重复抓取和循环抓取

              支持的功能:

                            添加新url到待爬取的集合中

                            判断待添加url是否在集合中

                            从集合中获取待爬取url

                            判断集合中是否还有待爬取的url

                            将url从待爬取移动到已爬取集合中

网页下载器

              将互联网上url对应的网页下载到本地的工具

网页解析器

              在后面的实例中详细讲解

实例讲解:

分成四个部分:

url_manager,url_downloader, html_parser, html_outputer:

 

url_manager:                         #url管理器

class UrlManager(object):       

#初始化url列表:存取爬取过得url列表,存取未爬取的url列表

def __init__(self):         

        self.old_urls = set()   #已爬取过得url列表集合

        self.new_urls = set()   #未爬取过得url列表集合

 

     #url管理器添加一个新的待爬取的url 

    def add_new_url(self,url):     #url管理器添加一个新的url

        if url is None:           

            return

       #若这个url既不在爬取过得url列表集合也不在未爬取的url列表集合

        if url not in self.old_urls and url not inself.new_urls:    

            self.new_urls.add(url)    #将这个url添加到未爬取的url列表集合

       

    def add_new_urls(self,urls):    #url管理器添加批量url

        if urls is None or len(urls) ==0:

            return

        for url in urls:

            self.add_new_url(url)

                   

    def has_new_url(self):     #判断url管理器是否有新的url

        return len(self.new_urls) !=0

     

    def get_new_url(self):     #从待爬取的url列表中获取一个url

        new_url= self.new_urls.pop()

        #pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 

        self.old_urls.add(new_url)

       return new_url

 

 

url_downloader:       #url下载器

import urllib2

class HtmlDownloader(object):  

    def download(self,url):   #返回下载好的url的内容

        if url is None:

            return None

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值