Я только начал использовать скрап. Я сталкиваюсь с несколькими проблемами с логином в scrapy. Я пытаюсь войти в Facebook, используя запрос POST.
Я могу получить «lsd» и «lgnrnd» с помощью селекторов CSS. Однако я не могу получить lgnjs и ab_test_data . Я поместил все остальные параметры так же, как показано в заголовке, так как они статические.
Как я могу получить эти параметры, чтобы я мог войти в Facebook?
как заставить работать отправку формы и очистить некоторые случайные данные после входа в систему?
Вот мой код:
import scrapy
class FbLogin(scrapy.Spider):
name = 'fblogin'
login_url= "https://www.facebook.com"
start_urls = [login_url]
def parse(self, response):
#extract csrf token value
token= response.css('input[name="lsd"]::attr(value)').extract_first()
lgnrnd=response.css('input[name="lgnrnd"]::attr(value)').extract_first()
# i get u'n'
lgnjs=response.css('input[name="lgnjs"]::attr(value)').extract_first(),
# i get u'n'
ab_test_data=response.css('input[name="ab_test_data"]::attr(value)').extract_first(),
#create dict with data to send it to server
data= {
'lsd':token,
'email':'abcde@gmail.com',
'pass':'*********',
'lgnrnd': lgnrnd,
'lgnjs':lgnjs,
'ab_test_data':ab_test_data,
'timezone': '****',
'lgndim':'****',
'locale': '****',
'login_source': '****',
'prefill_contact_point':'abcde@gmail.com',
'prefill_source': '****',
'prefill_type': '****',
'skstamp':'****'
}
#yield a post request to it
yield scrapy.FormRequest(url=self.login_url,formdata= data,callback=self.fb_parse)
Также, как мне убедиться, что я успешно вошел в систему? В ответ я всегда получаю пустой список.
и когда я открываю инструмент разработчика и проверяю, я вижу, что данные в ответ зашифрованы.
Как я могу получить объект ответа с помощью скрапа?
На данный момент я делаю это:
def fb_parse(self, response):
#check login succeed before going on
if "the password you entered is incorrect" in response.body:
self.log("\n\n\n\nLogin failed\n\n\n\n", level=self.log())
else:
self.log("\n\n\n Logging in ..!!!\n\n\n")
# self.log(response.body)
return scrapy.Request(url="https://www.facebook.com",callback=self.parse_items)
def parse_items(self,response):
self.log("\n\n\n I just visitied "+response.url+"\n\n\n")