前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5、web爬虫,scrapy模块,解决重复ur——自动递归url

5、web爬虫,scrapy模块,解决重复ur——自动递归url

原创
作者头像
天降攻城狮
修改2019-07-04 10:08:31
9350
修改2019-07-04 10:08:31
举报
文章被收录于专栏:分布式爬虫分布式爬虫

##【http://www.bdyss.cn

##【http://www.swpan.cn

一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过

记录url可以是缓存,或者数据库,如果保存数据库按照以下方式:

id   URL加密(建索引以便查询)   原始URL

保存URL表里应该至少有以上3个字段

1、URL加密(建索引以便查询)字段:用来查询这样速度快,

2、原始URL,用来给加密url做对比,防止加密不同的URL出现同样的加密值

自动递归url

代码语言:txt
复制
# -*- 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层

image
image

【转载自:http://www.lqkweb.com

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档