最棘手的是动态获取15258543
产品ID,然后在URL中使用它来获得评论。该产品ID可以在产品页面上的多个地方找到,比如,有一个我们可以使用一个meta
元素:
<meta itemprop="productID" content="15258543">
这里是一个工作的蜘蛛,使一个单独的GET请求来获得的评论,通过加载的json.loads()
JSON响应,并打印产品的整体评价:
import json
import scrapy
class TargetSpider(scrapy.Spider):
name = "target"
allowed_domains = ["target.com"]
start_urls = ["http://www.target.com/p/bounty-select-a-size-paper-towels-white-8-huge-rolls/-/A-15258543#prodSlot=medium_1_4&term=bounty"]
def parse(self, response):
product_id = response.xpath("//meta[@itemprop='productID']/@content").extract_first()
return scrapy.Request("http://tws.target.com/productservice/services/reviews/v1/reviewstats/" + product_id,
callback=self.parse_ratings,
meta={"product_id": product_id})
def parse_ratings(self, response):
data = json.loads(response.body)
print(data["result"][response.meta["product_id"]]["coreStats"]["AverageOverallRating"])
打印4.5585
。
我明白了,谢谢!只是一个后续问题。我注意到有另一个XHR获取商店ID的请求,它被命名为“v1?request_type = availability&key = ......”,所以我尝试使用相同的方式来获取该json文件,但返回消息说“请求方法”GET'不支持“。我的问题是,我可以清楚地看到在Chrome开发者工具中返回的json,所以肯定有办法得到它,我只是不知道如何。你能给我一个提示吗? – user2628641