通常抓取過的url不重複抓取,那麼就須要記錄url,判斷當前URL若是在記錄裏說明已經抓取過了,若是不存在說明沒抓取過web
記錄url能夠是緩存,或者數據庫,若是保存數據庫按照如下方式:數據庫
id URL加密(建索引以便查詢) 原始URL緩存
保存URL表裏應該至少有以上3個字段
一、URL加密(建索引以便查詢)字段:用來查詢這樣速度快,
二、原始URL,用來給加密url作對比,防止加密不一樣的URL出現一樣的加密值dom
自動遞歸urlscrapy
# -*- 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層ide