Scrapy - Тайм-аут шлюза - PullRequest
       96

Scrapy - Тайм-аут шлюза

0 голосов
/ 11 июля 2020

Я пытаюсь очистить некоторые данные со страницы, которая использует Javascript входов для загрузки таблицы и обработки разбивки на страницы без опции «next» для страниц. Я использую spla sh для обработки Javascript, и он работает в веб-интерфейсе, однако, когда я запускаю паука, он продолжает выдавать мне ошибку 504 Gateway Time-Out. Мне удалось очистить первую страницу, но разбивка на страницы является проблемой.

Вот паук:

def parse_response(self, response):
    for tr in response.xpath("//table[@id='ctl00_ContentPlaceHolder1_uctl_gvResults']/tbody/tr"):
        yield{
            'lld': tr.xpath(".//td[3]/text()").extract_first(),
            'crown-land-desc': tr.xpath(".//td[4]/text()").extract_first(),
            'land-class': tr.xpath(".//td[5]/text()").extract_first(),
            'acres': tr.xpath(".//td[6]/text()").extract_first(),
            'occupant': tr.xpath(".//td[8]/text()").extract_first()
        }

# def parse_other_pages(self, response):
    for page in response.data:
        sel = Selector(text=page)    
        for tr in response.xpath("//table[@id='ctl00_ContentPlaceHolder1_uctl_gvResults']/tbody/tr"):
            yield{
                'lld': tr.xpath(".//td[3]/text()").extract_first(),
                'crown-land-desc': tr.xpath(".//td[4]/text()").extract_first(),
                'land-class': tr.xpath(".//td[5]/text()").extract_first(),
                'acres': tr.xpath(".//td[6]/text()").extract_first(),
                'occupant': tr.xpath(".//td[8]/text()").extract_first()
            }

А вот сценарий Lua, который я использую:

script= '''
    function main(splash, args)
      assert(splash:go(args.url))
      assert(splash:wait(0.5))
      splash:send_keys("<Tab>")
      splash:send_keys("<Tab>")
      splash:send_keys("<Tab>")
      splash:send_keys("<Tab>")
      splash:send_text("493")
      splash:send_keys("<Tab>")
      splash:send_keys("<Return>")
      assert(splash:wait(2.5))
      treat=require('treat')
      result= {}
      for i=1,10,1
      do
        local element = splash:select('td > a:first-child')
        local bounds = element:bounds()
        assert(element:mouse_click{x=bounds.width/2, y=bounds.height/2})
        assert(splash:wait(3.5))
        result[i]=splash.html()
      end
      return treat.as_array(result)
    end
'''

Уменьшение времени ожидания приводит к тому, что Spla sh не может загрузить страницу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...