第三百二十六節,web爬蟲,scrapy模塊,解決重復url——自動遞歸url
一般抓取過的url不重復抓取,那么就需要記錄url,判斷當前URL如果在記錄里說明已經抓取過了,如果不存在說明沒抓取過
記錄url可以是緩存,或者數據庫,如果保存數據庫按照以下方式:
id URL加密(建索引以便查詢) 原始URL
保存URL表里應該至少有以上3個字段
1、URL加密(建索引以便查詢)字段:用來查詢這樣速度快,
2、原始URL,用來給加密url做對比,防止加密不同的URL出現同樣的加密值
自動遞歸url
# -*- coding: utf-8 -*- import scrapy #導入爬蟲模塊 from scrapy.selector import HtmlXPathSelector #導入HtmlXPathSelector模塊 from scrapy.selector import Selector class AdcSpider(scrapy.Spider): name = 'adc' #設置爬蟲名稱 allowed_domains = ['hao.360.cn'] start_urls = ['https://hao.360.cn/'] def parse(self, response): #這里做頁面的各種獲取以及處理 #遞歸查找url循環執行 hq_url = Selector(response=response).xpath('//a/@href') #查找到當前頁面的所有a標簽的href,也就是url for url in hq_url: #循環url yield scrapy.Request(url=url, callback=self.parse) #每次循環將url傳入Request方法進行繼續抓取,callback執行parse回調函數,遞歸循環 #這樣就會遞歸抓取url並且自動執行了,但是需要在settings.py 配置文件中設置遞歸深度,DEPTH_LIMIT=3表示遞歸3層
這樣就會遞歸抓取url並且自動執行了,但是需要在settings.py 配置文件中設置遞歸深度,DEPTH_LIMIT=3表示遞歸3層