Я делаю паука в 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)
Но это то же самое, что мне делать?передать ответ селена моей функции обратного вызова ??я должен это назвать?или что-то?
Спасибо