Использование Scrapy для заполнения текстовой области для входа в систему

#python #selenium #scrapy

#python #селен #scrapy

Вопрос:

Я пытаюсь получить информацию об игроке с трансферного рынка (https://www.transfermarkt.com/spieler-statistik/wertvollstespieler/marktwertetop ), и я успешно получил нужные мне данные.

Но когда я попытался очистить «Список моего игрока» (https://www.transfermarkt.com/darrellcity/spielerWatchlist/meintm/1019535 ) с веб-сайта, который требует входа в систему, я понятия не имел, как заполнить текстовые поля с помощью Scrapy. Я попытался с помощью Scrapy.FormRequests, но обнаружил, что веб-сайт не использует метод POST для входа в систему. Кроме того, я попытался использовать selenium для завершения входа в систему перед очисткой с помощью Scrapy, но, похоже, это не сработало.

Я знаю, как это сделать в Selenium, но вместо этого я хочу использовать Scrapy, чтобы увеличить скорость очистки и обновления данных.

Ниже приведен мой код для списка игроков, который не требует входа в систему

 import time
import scrapy
from scrapy.http import FormRequest

class TMSpider(scrapy.Spider):
    name = 'scrapyfirst'
    allowed_domain = ["transfermarkt.com"]

    def start_requests(self):
        urls = [f"https://www.transfermarkt.com/spieler-statistik/wertvollstespieler/marktwertetop?page={i}" for i in range(1,11)]
        for url in urls:
            yield scrapy.Request(url,callback=self.parse)
    def parse(self,response):
        item = ProjItem()
        item['name'] = response.xpath('//td/a[not(contains(text(),"rn"))]/text()').getall()
        item['value'] = response.xpath('//td/a[not(contains(text(),"rn"))]/text()').getall()
        yield item```
  

Комментарии:

1. Я взглянул на веб-сайт, и, похоже, он использует POST-запрос для входа в систему (как вы можете видеть, если вы открываете вкладку Сети в Chrome при входе в систему).

2. Спасибо! После повторной проверки я нашел данные формы в файле xhr для запросов Scrapy form