【问题标题】:Scrapy Splash recursive crawl not workingScrapy Splash递归爬网不起作用
【发布时间】:2019-04-16 13:36:35
【问题描述】:

我尝试使用类似问题的提示,但没有成功。 最终还是回到了起点,想请教一下。

我无法使用 scrapy splash 执行递归爬取过程,但在单个页面上执行此操作不会出现问题。我在要抓取的错误网址中看到问题:

2019-04-16 16:17:11 [scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to '192.168.0.104': <GET http://192.168.0.104:8050/************>

但链接必须是https://www.someurl.com/***************

def start_requests(self):
    for url in self.start_urls:
        yield scrapy.Request(url, self.parse, meta={'splash': {'endpoint': 'render.html', 'args': {'wait': 0.5}}})

def parse(self, response):
    ***********
    items_urls = ***********
    for url in items_urls.extract():
        yield Request(urlparse.urljoin(response.url, url), callback=self.parse_items, meta={'item': item})

def parse_items(self, response):
    ***********
    yield item

【问题讨论】:

  • 您可能在您的蜘蛛上配置了“allowed_domains”属性,并试图从该域之外请求一个 url。尝试删除与此类似的行并再次运行蜘蛛: allowed_domains = ['example.com']
  • @LuizRodriguesdaSilva 某个域上的所有页面。我认为在这种情况下我需要稍微调整一下 Splash Request,但我不知道如何。

标签: web-scraping scrapy


【解决方案1】:

我找到了解决办法:

只需删除 urlparse.urljoin(response.url, url) 模块并将其更改为像 "someurl.com" + url 这样的简单字符串

现在所有链接都正确无误,抓取过程正常。

但现在我在抓取循环方面遇到了一些麻烦,但这是另一个问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多