我正试图在该网站上刮刮有关unibet赌场的评论:https://casinoplacard.com/unibet-casino-reviews-and-bonuses/
就像我对其他评论来源所做的那样,我在Python上使用了Scrapy,通过以下代码刮取了评论:
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,发现页面加载后,会自动使用URL https://casinoplacard.com/wp-admin/admin-ajax.php
完成XHR POST请求方法通过查看该请求,我找到了182条评论数据:
预览>>数据>>评论
那么你们能帮助我了解捕获这些数据的方式吗?
非常感谢您!
答案 0 :(得分: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的标题选项卡中获取参数,然后表格数据就是您的参数。对于标题,您也可以在标题标签中找到它,然后搜索 用户代理,然后将所有内容粘贴到标题中。 Ajax URL是我在问题中写的URL。
希望对某人有帮助。