sono nuovo di scrapy e ho deciso di provarlo a causa di buone recensioni online. Sto cercando di accedere a un sito Web con scrapy. Ho eseguito correttamente l'accesso con una combinazione di selenio e meccanizzazione raccogliendo i biscotti necessari con il selenio e aggiungendoli a meccanizzare. Ora sto cercando di fare qualcosa di simile con il scrapy e il selenio, ma non riesco a far funzionare nulla. Non posso nemmeno dire se qualcosa funziona o no. Qualcuno può aiutarmi per favore. Di seguito è ciò che Ive ha iniziato. Potrei anche non aver bisogno di trasferire i cookie con scrapy, ma non posso dire se la cosa in realtà in realtà accede o no. Grazielogin di autenticazione scrapy con i 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()
Dopo aver corretto i problemi che hai notato, ero in grado di accedere con successo! Nota: i cookie che il selenio ha restituito erano un elenco di dizionari che dovevano essere modificati in un singolo dizionario. Grazie mille per l'aiuto. – JonDog
scusa, sono nuovo nello stackoverflow. Sono stanco di votare ma dice che ho bisogno di 15 reputazione prima di poter votare. Non vedo nessun altro modo per contrassegnare come risposta. AGGIORNAMENTO - Ok, ho fatto clic sul segno di spunta. Penso sia così. – JonDog
@ JohnDog ... potresti postare come hai gestito la conversione dei cookie da un modulo all'altro – Amistad