私はhttps://www.tripadvisor.com/Hotel_Review-g60763-d2173604-Reviews-Dream_Downtown-New_York_City_New_York.htmlからレビューを取得しようとしています。レビューをもっとクリックすると必要なAJAXリクエストのようです。https://www.tripadvisor.com/OverlayWidgetAjax?Mode=EXPANDED_HOTEL_REVIEWS&metaReferer=Hotel_Reviewです。私はすべてのデータを正しく解析できるように、xhr投稿要求をどのように取得するのですか?ここに私のコードは次のとおりです。治療/要求シミュレーションXHR
# -*- coding: utf-8 -*-
import scrapy
def parse(self, response):
url = 'https://www.tripadvisor.com/OverlayWidgetAjax?Mode=EXPANDED_HOTEL_REVIEWS&metaReferer=Hotel_Review'
headers = {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Accept-Encoding':'gzip, deflate, br',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
'X-Requested-With':'XMLHttpRequest'}
req = scrapy.Request(url,method='POST',body='{"filters": []}',headers=headers,callback=self.parse_me)
yield req
def parse_me(self,response):
print(response.body)
はまた、私はそうレビューをすべて取得するには、これが唯一の「より多くの」オプションを持っているのリストが含まれて気づいた私の最善の策は、このような何かをすることです:
if 'more' is present:
do xhr request
else:
pass
可能であれば、私は治療に慣れていて、依然として私がよく知っているリクエストモジュールの対応する答えを見つけられなかったので、リクエストに対する解決をしたいと思います。私はいつも離れたいと思っているセレンを使います。ありがとう。
具体的な質問は何ですか? –
@PeterHenell私は、セレンを使用してページのソースからより多くをクリックする代わりに、そこからレビューデータを得ることができるように、xhr投稿要求をどのように持ち込むかを考え出しています。私はこれを行う方法を完全にはわかっていないし、現在のヘッダーは私に404を与える – Tyshawn