python爬蟲模塊URL管理器模塊用法解析
這篇文章主要介紹了python爬蟲模塊URL管理器模塊用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
URL管理器模塊
一般是用來維護爬取的url和未爬取的url已經(jīng)新添加的url的,如果隊列中已經(jīng)存在了當(dāng)前爬取的url了就不需要再重復(fù)爬取了,另外防止造成一個死循環(huán)。舉個例子
我爬www.baidu.com 其中我抓取的列表中有music.baidu.om,然后我再繼續(xù)抓取該頁面的所有鏈接,但是其中含有www.baidu.com,可以想象如果不做處理的話就成了一個死循環(huán)了,在百度首頁和百度音樂頁循環(huán),所以有一個對列來維護URL是很重要的。
下面以python代碼實現(xiàn)為例,使用的deque雙向隊列方便取出以前的url。
from collections import deque
class URLQueue():
def __init__(self):
self.queue = deque() # 待抓取的網(wǎng)頁
self.visited = set() # 已經(jīng)抓取過的網(wǎng)頁
def new_url_size(self):
'''''
獲取未爬取URL集合的大小
:return:
'''
return len(self.queue)
def old_url_size(self):
'''''
獲取已爬取URL的大小
:return:
'''
return len(self.visited)
def has_new_url(self):
'''''
判斷是否有未爬取的URL
:return:
'''
return self.new_url_size() != 0
def get_new_url(self):
'''''
獲取一個未爬取的URL
:return:
'''
new_url = self.queue.popleft()#從左側(cè)取出一個鏈接
self.old_urls.add(new_url)#記錄已經(jīng)抓取
return new_url
def add_new_url(self, url):
'''''
將新的URL添加到未爬取的URL集合
:param url: 單個url
:return:
'''
if url is None:
return False
if url not in self.new_urls and url not in self.old_urls:
self.new_urls.append(url)
def add_new_urls(self, urlset):
'''''
將新的URL添加到未爬取的URL集合
:param urlset: url集合
:return:
'''
if urlset is None or len(urlset) == 0:
return
for url in urlset:
self.add_new_url(url)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Pytorch使用卷積神經(jīng)網(wǎng)絡(luò)對CIFAR10圖片進行分類方式
這篇文章主要介紹了Pytorch使用卷積神經(jīng)網(wǎng)絡(luò)對CIFAR10圖片進行分類方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Python學(xué)習(xí)筆記之While循環(huán)用法分析
這篇文章主要介紹了Python學(xué)習(xí)筆記之While循環(huán)用法,結(jié)合具體實例形式分析了while循環(huán)的原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下2019-08-08
關(guān)于DataFrame數(shù)據(jù)的查詢和編輯
在使用pandas處理DataFrame時,可通過列索引標(biāo)簽獲取列數(shù)據(jù),行數(shù)據(jù)的獲取可以利用行索引或位置切片,如iloc和loc方法,增加數(shù)據(jù)時,可通過append方法增加行,直接賦值增加列,刪除數(shù)據(jù)則通過drop方法,通過設(shè)置axis參數(shù)確定是刪除行還是列2024-09-09
Python實現(xiàn)list反轉(zhuǎn)實例匯總
這篇文章主要介紹了Python實現(xiàn)list反轉(zhuǎn)的方法,實例總結(jié)了關(guān)于list的各種較為常見的操作技巧,需要的朋友可以參考下2014-11-11
Python matplotlib繪制實時數(shù)據(jù)動畫
Matplotlib作為Python的2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環(huán)境生成出版質(zhì)量級別的圖形。本文將利用Matplotlib庫繪制實時數(shù)據(jù)動畫,感興趣的可以了解一下2022-03-03
Python+OpenCV圖片局部區(qū)域像素值處理改進版詳解
這篇文章主要為大家詳細介紹了Python+OpenCV圖片局部區(qū)域像素值處理的改進版,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
Python文件基本操作open函數(shù)應(yīng)用與示例詳解
這篇文章主要為大家介紹了Python文件基本操作open函數(shù)應(yīng)用與示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
pandas重復(fù)行刪除操作df.drop_duplicates和df.duplicated的區(qū)別
本文主要介紹了pandas重復(fù)行刪除操作df.drop_duplicates和df.duplicated的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Python中的sorted函數(shù)應(yīng)用及文件操作詳解
這篇文章主要介紹了Python中的sorted函數(shù)應(yīng)用及文件操作詳解,python只能將字符串寫入到文本文件,要將數(shù)值數(shù)據(jù)存儲到文本本件中,必須先試用函數(shù)str()將其轉(zhuǎn)換為字符串格式,需要的朋友可以參考下2023-12-12

