Я новичок в Scrapy и пытается наскрести некоторые данные из fandromeda.com сайта, но мне нужно, чтобы проверить подлинность первых, прежде чем я могу начать соскоб необходимую информацию, которая на следующий URLне удалось проверить подлинность fandromeda с помощью Scrapy
https://fandromeda.com/v2/event/results
Я пытаюсь использовать from_response метод для того, чтобы попытаться войти на сайт
import scrapy
from scrapy.spiders import CrawlSpider
from scrapy.http import Request, FormRequest
from scrapy.selector import Selector
from fandromeda.items import FandromedaItem
class FandromedaC(CrawlSpider):
name = 'fandromeda_c'
allowed_domains = ['fandromeda.com']
start_urls = ['https://fandromeda.com/user/signin']
def parse(self, response):
sel = Selector(response)
sign_in = sel.xpath('//button[@type="submit"]/text()').extract()
if sign_in:
if sign_in[0] == "SIGN IN":
self.log("$$$$$$$$$$$$$$$$$$")
form_data = {'username': 'xxxx','password': 'xxxx' }
return scrapy.FormRequest.from_response(response,formdata=form_data,callback=self.parse_login_response)
def parse_login_response(self,response):
self.log("#####################")
self.log(response.status)
я ожидаю быть перенаправлены на главную страницу и получить, что содержание в ответ, но все это я получаю войти страницу еще раз.
Я заметил, что scrapy делает запрос на получение вместо сообщения в случае по умолчанию. 2016-12-01 10:53:44 [SCRAPY] DEBUG: просканированных (200) https://fandromeda.com/user/signin?handle= & имя пользователя = хххх & пароль = хххх> (реферер: https://fandromeda.com/user/signin)
Я пытался использовать метод аргумент в ответ от заставить Scrapy использовать метод POST
scrapy.FormRequest.from_response(response,method="POST",formdata=form_data,callback=self.parse_login_response)
Теперь SCRAPY делает запрос на почту, но есть разница в результатах. Может ли кто-нибудь указать мне в правильном направлении, что нужно сделать?
Спасибо большое за @Umair ..Я попробую это и дам вам знать результаты и отметьте это как ответ. Еще один вопрос, касающийся этого: возможно ли продлить код, чтобы сделать один дополнительный вызов другой странице, например «https://fandromeda.com/v2/event/results». Будет ли scrapy заботиться о передаче необходимых параметров или мне нужно каждый раз входить в систему при загрузке страницы? Просто не уверен, как правильно идти с последующими обходами страниц. – Neel
Как я уже сказал, они используют слишком много AJAX на своем сайте. Ссылка https://fandromeda.com/v2/event/results также использует AJAX .... См. [Screesnhot] (http://imgur.com/a/ySRnX), они отправляют AJAX в https: // fandromeda .com/v2/event/result_json URL для загрузки данных результатов – Umair
И как только вы вошли в систему с помощью scrapy, сеанс создается, и файлы cookie автоматически обновляются с помощью scrapy, вам не нужно входить в систему перед посещением каждого URL-адреса. – Umair