• 第三百二十六节,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层

  • 相关阅读:
    PAT1066(AVL树)
    判断是对象,还是数组对象
    electron打包成.exe后限制只启动一个应用
    electron启动出现短暂的白屏
    js sort方法根据数组中对象的某一个属性值进行排序
    VUE DIV模拟input框的基本处理
    vue 设置 input 为不可以编辑
    VUE实现限制输入框最多输入15个中文,或者30个英文
    electron 点击事件无效
    electron监听系统托盘,electron是否最小化到系统托盘
  • 原文地址:https://www.cnblogs.com/adc8868/p/7233266.html
Copyright © 2020-2023  润新知