最棘手的是動態獲取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