Передача ответа селена на обратный вызов (SCRAPY) - PullRequest
0 голосов
/ 18 декабря 2018

Я делаю паука в Scrapy, и я понял, что мне пришлось использовать Selenium (возможно, всплеск, я попробую позже) для первой части, которая представляет собой форму с динамической капчей, поэтому я должен войти встраница, но теперь мне нужно передать ответ на scrapy, потому что я хочу сделать извлечение с помощью scrapy.Я кое-что прочитал о ЗАГРУЗКАХ СРЕДНЕГО ОБОРУДОВАНИЯ, но не совсем понял.

Так вот мой код:

def parse(self, response):
     #do something with selenium, break captcha and enter main page
     urlRequest = driver.current_url
                if wasCaptchaBroken:
                    yield Request(url= urlRequest, callback = self.parse_each_url)

def parse_each_url(self,response):

    print("IN : " + response)

    yield{
        'url': response.url,
        'response':response
    }

Мой код никогда не вводится в parse_each_url, поэтому я изменяю свои настройки.py:

SPIDER_MIDDLEWARES = {
    'my_project.middlewares.MyProjectSpiderMiddleware': 543,
    'my_project.middlewares.SeleniumMiddleware' : 600
}

И middleware.py:

from scrapy.http import HtmlResponse
from selenium import webdriver

class SeleniumMiddleware(object):
    def process_request(self, request, spider):
        driver = webdriver.FirefoxProfile()
        driver.get(request.url)

        body = driver.page_source
        return HtmlResponse(driver.current_url, body=body, encoding='utf-8', request=request)

Но это то же самое, что мне делать?передать ответ селена моей функции обратного вызова ??я должен это назвать?или что-то?

Спасибо

...