第三百二十六節,web爬蟲,scrapy模塊,解決重復ur——自動遞歸url



第三百二十六節,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層

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM