天天看點

5、web爬蟲,scrapy子產品,解決重複ur——自動遞歸url

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

一般抓取過的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層

5、web爬蟲,scrapy子產品,解決重複ur——自動遞歸url

【轉載自:

http://www.leiqiankun.com/?id=48

繼續閱讀