gpt4 book ai didi

python - 如何让 Scrapy 只抓取一页(使其非递归)?

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:03 24 4
gpt4 key购买 nike

我正在使用最新版本的 scrapy ( http://doc.scrapy.org/en/latest/index.html ) 并试图弄清楚如何让 scrapy 只抓取作为 start_url 列表的一部分提供给它的 URL。在大多数情况下,我只想抓取 1 个页面,但在某些情况下,我可能会指定多个页面。我不希望它爬到其他页面。

我已经尝试将深度级别设置为 1,但我不确定在测试中它是否实现了我希望实现的目标。

任何帮助将不胜感激!

谢谢!

2015-12-22 - 代码更新:

# -*- coding: utf-8 -*-
import scrapy
from generic.items import GenericItem

class GenericspiderSpider(scrapy.Spider):
name = "genericspider"

def __init__(self, domain, start_url, entity_id):
self.allowed_domains = [domain]
self.start_urls = [start_url]
self.entity_id = entity_id


def parse(self, response):
for href in response.css("a::attr('href')"):
url = response.urljoin(href.extract())
yield scrapy.Request(url, callback=self.parse_dir_contents)

def parse_dir_contents(self, response):
for sel in response.xpath("//body//a"):
item = GenericItem()

item['entity_id'] = self.entity_id
# gets the actual email address
item['emails'] = response.xpath("//a[starts-with(@href, 'mailto')]").re(r'mailto:\s*(.*?)"')


yield item

下面,在第一个响应中,您提到使用通用蜘蛛 --- 这不是我在代码中所做的吗?你还建议我删除

callback=self.parse_dir_contents

来自解析函数?

谢谢。

最佳答案

看起来您正在使用 CrawlSpider,它是一种特殊的 Spider 来抓取页面内的多个类别。

如果只抓取 start_urls 中指定的 url,只需覆盖 parse 方法,因为这是开始请求的默认回调。

关于python - 如何让 Scrapy 只抓取一页(使其非递归)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34386743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com