当前位置: 首页 > 后端技术 > Python

理解爬虫:如何管理爬虫过程中使用和未使用的URL地址?

时间:2023-03-25 22:26:21 Python

URL管理器是抓取过程的重要组成部分。用于管理爬虫过程中众多的URL地址,避免爬虫重复获取地址,爬虫陷入死循环等情况。比如我们要根据baidu.com进行爬取。如果baidu.com包含在爬虫的子页面中,不处理就会陷入循环。因此,在抓取过程中维护好URL是非常重要的。的。1.创建url管理对象和属性定义1#importqueue2fromcollectionsimportdeque34#定义urlmanagerclass5classurl_queue():6def__init__(self):7#定义要抓取的队列8self.queue=deque()9#定义已经爬取的集合,使用set集合保证去重10self.set=set()2、将页面上获取的url添加到未爬取的队列中1defadd_nocrawl_url(self,url):2'''3:return:将抓取到的新url添加到未抓取队列中4'''5#检查url是否为None6ifurlisNone:7#ReturnFalse8returnFalse9#检查是否为Noneurl已经存在于已爬取或未爬取的集合中10elifurlnotinself.queueandurlnotinself.set:11#如果不存在,则将新的url添加到未爬取的队列中12self.queue.append(url)13#returnTrue14returnTrue3,获取下一次爬取的url1defget_nocrawl_url(self):2'''3:return:获取未爬取的url4'''5#取出anuncrawl_url6nocrawl_url=self.queue.popleft()7#将未爬取的url添加到已经爬取的urlcollection8self.set.add(nocrawl_url)9returnnocrawl_url4,get未爬取或者已经爬取的url长度crawled1defget_nocrawl_size(self):2'''3:return:获取要爬取的队列长度4'''5nocrawl_size=len(self.queue)6returnnocrawl_size78defget_crawl_size(self):9'''10:return:获取爬取的集合长度11'''12crawl_size=len(self.set)13rawl1derawl_1return_fcrawl(self):16'''17:return:有没有未爬取的url18'''19ifself.get_nocrawl_size()<=0:20returnFalse21else:22returnTrue实力提升最重要,输入公众号回复:“Python计算题”,获取100道python案例计算题,前往获取刷题~更多精彩,前往微信公众号【Python集中营】,关注获取《python 从入门到精通全套视频》