Python — Как очистить данные с веб-сайта, используя admin-ajax.php с Scrapy

Я пытаюсь почистить отзывы о Unibet Casino на этом сайте: https://casinoplacard.com/unibet-casino-reviews-and-bonuses/

Как и в случае с другими источниками отзывов, я использовал Scrapy on Python, чтобы очистить отзывы с помощью кода ниже:

class slotRunner_spyder(scrapy.Spider):
count=0

name = "slotRunner_spyder"start_urls = [

'https://casinoplacard.com/unibet-casino-reviews-and-bonuses/'
]
def parse(self, response):

parsed_uri = urlparse(response.url)
domain = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)

for review in response.css('div.rwp-users-reviews > div.rwp-u-review') :
self.count+=1
yield {
'name': review.css('td a::text').extract_first(),
'date': review.css('td small::text').extract_first(),
'review': review.css('div.rwp-u-review__content > div.rwp-u-review__comment').extract(),
'url' : response.url
}
print(self.count)

Но для этого сайта это не работает. Чтобы лучше понять, я ввел счетчик (self.count) и обнаружил, что он выполняет только 1 итерацию, что ненормально …

Затем я провел некоторое время, изучая DevTools этого веб-сайта, и обнаружил, что при загрузке страницы метод запроса XHR POST выполняется автоматически с URL: https://casinoplacard.com/wp-admin/admin-ajax.php

И, посмотрев на этот запрос, я нашел данные 182 отзывов в:

Предварительный просмотр >> Данные >> Отзывы

Не могли бы вы, ребята, помочь мне понять, как работает сбор данных?

Большое спасибо !

0

Решение

Я наконец нашел, как это сделать, я уверен, что это не лучший способ, но, по крайней мере, я сделал то, что хотел.

Поэтому, как я сказал в своем вопросе на вкладке предварительного просмотра, были все данные, которые мне были нужны. Так что я должен был получить эти данные. Для этого я понял, что при загрузке URL-адреса запрос XHR POST выполнялся автоматически, поэтому я просто попытался заставить python запросить этот URL-адрес.

import requests
s = requests.Session()
# We get the URL into that session
s.get(url)
#Here is the imitation of the POST request
self.r = s.post(ajax_URL,data=param,headers=headers)`

Параметры вы просто получаете их на вкладке заголовков DevTool, тогда данные формы являются вашими параметрами. Для заголовка вы получите его также во вкладке заголовка, вы ищете
User-Agent и просто вставьте все это в заголовки. URL ajax — это тот, который я написал в своем вопросе.

Надеюсь, что это поможет кому-то.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]