Jestem nowy w złomowaniu i postanowiłem wypróbować go z powodu dobrych recenzji online. Próbuję zalogować się do witryny za pomocą scrapy. Udało mi się zalogować z kombinacją selenu i zmechanizować, zbierając potrzebne ciasteczka z selenem i dodając je do zmechanizowania. Teraz próbuję zrobić coś podobnego za pomocą scrapy i selenu, ale nie mogę sprawić, żeby cokolwiek działało. Nie mogę nawet powiedzieć, czy coś działa, czy nie. Czy ktoś może mi pomóc. Poniżej jest to, od czego zacząłem. Może nawet nie muszę przenosić plików cookie ze złomem, ale nie mogę powiedzieć, czy coś rzeczywiście się loguje, czy nie. DziękiLogowanie do autoryzacji scrapy za pomocą plików cookie
from scrapy.spider import BaseSpider
from scrapy.http import Response,FormRequest,Request
from scrapy.selector import HtmlXPathSelector
from selenium import webdriver
class MySpider(BaseSpider):
name = 'MySpider'
start_urls = ['http://my_domain.com/']
def get_cookies(self):
driver = webdriver.Firefox()
driver.implicitly_wait(30)
base_url = "http://www.my_domain.com/"
driver.get(base_url)
driver.find_element_by_name("USER").clear()
driver.find_element_by_name("USER").send_keys("my_username")
driver.find_element_by_name("PASSWORD").clear()
driver.find_element_by_name("PASSWORD").send_keys("my_password")
driver.find_element_by_name("submit").click()
cookies = driver.get_cookies()
driver.close()
return cookies
def parse(self, response,my_cookies=get_cookies):
return Request(url="http://my_domain.com/",
cookies=my_cookies,
callback=self.login)
def login(self,response):
return [FormRequest.from_response(response,
formname='login_form',
formdata={'USER': 'my_username', 'PASSWORD': 'my_password'},
callback=self.after_login)]
def after_login(self, response):
hxs = HtmlXPathSelector(response)
print hxs.select('/html/head/title').extract()
Po naprawieniu problemów, które zauważyłeś, udało mi się zalogować! Uwaga: pliki cookie, które zwróciło selen, to lista słowników, które musiały zostać zmienione na pojedynczy słownik. Wielkie dzięki za pomoc. – JonDog
Przepraszam, jestem nowy w stackoverflow. Zmęczyłem głosowanie, ale muszę przyznać, że potrzebuję 15 reputacji, zanim będę mógł głosować. Nie widzę żadnego innego sposobu oznaczenia jako odpowiedzi albo UPDATE - Ok, kliknąłem znacznik wyboru. Myślę, że to jest to. – JonDog
@ JohnDog..można napisać o tym, jak obsługiwałeś konwersję plików cookie z jednego formularza do drugiego – Amistad