7
我是scrapy的新手,並決定嘗試一下,因爲良好的在線評論。我正嘗試使用scrapy登錄到網站。我已經成功地使用硒和機械化的組合登錄,通過收集硒所需的餅乾並將其添加到機械化中。現在我正在嘗試做類似於scrapy和selenium的東西,但似乎無法獲得任何工作。我甚至不能確定是否有任何工作。誰能幫幫我嗎。以下是我開始的。我甚至可能甚至不需要用scrapy轉移cookie,但我不能告訴這個事情是否真的登錄過。 感謝scrapy認證用cookies登錄
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()
修復您記下的問題後,我能夠成功登錄!注意:硒返回的cookie是一個字典列表,必須將其更改爲單個字典。非常感謝您的幫助。 – JonDog
對不起,我新來stackoverflow。我厭倦了投票,但它說我需要15點聲望才能投票。我沒有看到任何其他方式來標記爲回答。更新 - 好吧,我點擊複選標記。我認爲就是這樣。 – JonDog
@ JohnDog ..請問您如何處理從一種形式到另一種形式的cookie轉換 – Amistad