我正在使用scrapy构建一个非常简单的刮刀,以便从一组网址中抓取某个元素。但是,为了做到这一点,我必须登录到网站,我无法让我的刮刀的登录部分工作。
是否可以手动登录网站然后让我的刮刀执行抓取任务?
答案 0 :(得分:0)
我理解您的要求,但您无法及时#34;手动登录"使用scrapy,你必须在上面注入饼干。
我看到这样做的最好方法是使用Selenium登录并让它创建cookie以在此处提供scrapy以及如何:
def get_cookies(self):
driver = webdriver.Firefox()
base_url = "http://www.example.com/login"
driver.get(base_url)
#Code to login
driver.find_element_by_name("username").send_keys("my_username")
driver.find_element_by_name("password").send_keys("my_password")
driver.find_element_by_name("submit").click()
#get the cookies created
cookies = driver.get_cookies()
driver.close()
return cookies
def parse(self, response):
return Request(url="http://my_domain.com/",
cookies=self.get_cookies(),
callback=self.login)
def login(self, response):
#You'll have the cookies here
代码可能需要在这里和那里进行一些调整,但这是一般的想法