五、web爬蟲,scrapy模塊,解決重複ur——自動遞歸url

百度雲搜索:http://bdy.lqkweb.com
搜網盤:http://www.swpan.cn

通常抓取過的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

image

相關文章
相關標籤/搜索