#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