【问题标题】:CrawlSpider with Splash getting stuck after first URL带有 Splash 的 CrawlSpider 在第一个 URL 后卡住
【发布时间】:2019-03-06 18:28:29
【问题描述】:

我正在编写一个scrapy spider,我需要在其中渲染一些带有splash 的响应。我的蜘蛛基于 CrawlSpider。我需要呈现我的 start_url 响应来喂我的爬虫。不幸的是,我的爬行蜘蛛在呈现第一个响应后停止了。知道出了什么问题吗?

class VideoSpider(CrawlSpider):

    start_urls = ['https://juke.com/de/de/search?q=1+Mord+f%C3%BCr+2']

rules = (
    Rule(LinkExtractor(allow=()), callback='parse_items',process_request = "use_splash",),
)

def use_splash(self, request):
    request.meta['splash'] = {
            'endpoint':'render.html',
            'args':{
                'wait':0.5,
                }
            }     
    return request

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_items(self, response):      
    data = response.body
    print(data)

【问题讨论】:

标签: scrapy scrapy-spider scrapy-splash


【解决方案1】:

使用 SplashRequest 而不是 scrapy.Request...查看我的答案 CrawlSpider with Splash

【讨论】:

    【解决方案2】:
    def use_splash(self, request):
    request.meta['splash'] = {
            'endpoint':'render.html',
            'args':{
                'wait':0.5,
                }
            }     
    return request
    

    你应该修改为

    def use_splash(self, request):
        return SplashRequest(xxxxxx)
    

    或者你可以重写这个函数

        def _build_request(self, rule, link):
            r = Request(url=link.url, callback=self._response_downloaded)
            r.meta.update(rule=rule, link_text=link.text)
            return r
    

    我不能保证它会起作用。我也在看这个。

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2016-07-25
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多