Я пытаюсь очистить данные со страницы, на которой есть много вызовов AJAX и выполнения javascript для рендеринга веб-страницы. Поэтому я пытаюсь использовать scrapy with selenium для этого. Принцип работы заключается в следующем:Scrapy with selenium для веб-страницы, требующей аутентификации
Добавить страницу Войти URL в список Scrapy start_urls
Используйте СформироватьЗапрос от метода ответа на сообщение имя пользователя и пароль, чтобы получить аутентификацией.
- После входа в систему запросите нужную страницу для очистки.
- Передайте этот ответ веб-обозревателю Selenium, чтобы щелкнуть по кнопкам на странице.
- После нажатия кнопок и создания новой веб-страницы запишите результат.
код, что я до сих пор выглядит следующим образом:
from scrapy.spider import BaseSpider
from scrapy.http import FormRequest, Request
from selenium import webdriver
import time
class LoginSpider(BaseSpider):
name = "sel_spid"
start_urls = ["http://www.example.com/login.aspx"]
def __init__(self):
self.driver = webdriver.Firefox()
def parse(self, response):
return FormRequest.from_response(response,
formdata={'User': 'username', 'Pass': 'password'},
callback=self.check_login_response)
def check_login_response(self, response):
if "Log Out" in response.body:
self.log("Successfully logged in")
scrape_url = "http://www.example.com/authen_handler.aspx?SearchString=DWT+%3E%3d+500"
yield Request(url=scrape_url, callback=self.parse_page)
else:
self.log("Bad credentials")
def parse_page(self, response):
self.driver.get(response.url)
next = self.driver.find_element_by_class_name('dxWeb_pNext')
next.click()
time.sleep(2)
# capture the html and store in a file
2 блокпостов я ударил до сих пор являются:
Шаг 4 не work.Whenever селеном открытым окно firefox, оно всегда находится на экране входа в систему и не знает, как пройти мимо него.
Я не знаю, как достичь шаг 5
Любая помощь будет принята с благодарностью
Теоретически, вы можете передать печенье ответа SCRAPY драйверу с помощью 'add_cookie' методу см: HTTP : //stackoverflow.com/questions/16563073/how-to-pass-scrapy-login-cookies-to-selenium и http://stackoverflow.com/questions/19082248/python-selenium-rc-create-cookie. Хотя, почему бы не войти в систему с помощью 'selenium', как предложил Эрик? Благодарю. – alecxe
Я мог бы это сделать, но я не хочу потерять потрясающий скрученный код, работающий под капотом. Я собираюсь очистить большое количество URL-адресов, как только я пройду проверку подлинности, и надеялся сделать это не блокирующим образом. .Я думаю неправильно? – Amistad