首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索特定产品的Amazon评论

检索特定产品的Amazon评论
EN

Stack Overflow用户
提问于 2017-01-29 12:55:21
回答 3查看 2.4K关注 0票数 1

我目前正在做一个研究项目,该项目需要分析特定产品的评论,并对该产品有一个整体的了解。

我听说亚马逊是一个获取产品评论/评论的好地方。有没有办法通过API从亚马逊检索这些用户评论/评论??我尝试了几个python代码,但都不能工作。如果没有API来检索数据,我需要编写一个爬行器吗?

有没有什么方法/地方可以检索用户对给定产品的评论?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-29 14:26:28

www.Scrapehero.com有一个关于如何抓取亚马逊产品细节的很好的教程:How To Scrape Amazon Product Details and Pricing using Python

他们使用的完整纯文本代码是...产品由其ASIN标识,因此将数组值更改为您有兴趣观看的产品。

代码语言:javascript
复制
from lxml import html  
import csv,os,json
import requests
from exceptions import ValueError
from time import sleep

def AmzonParser(url):
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}
page = requests.get(url,headers=headers)
while True:
    sleep(3)
    try:
        doc = html.fromstring(page.content)
        XPATH_NAME = '//h1[@id="title"]//text()'
        XPATH_SALE_PRICE = '//span[contains(@id,"ourprice") or contains(@id,"saleprice")]/text()'
        XPATH_ORIGINAL_PRICE = '//td[contains(text(),"List Price") or contains(text(),"M.R.P") or contains(text(),"Price")]/following-sibling::td/text()'
        XPATH_CATEGORY = '//a[@class="a-link-normal a-color-tertiary"]//text()'
        XPATH_AVAILABILITY = '//div[@id="availability"]//text()'

        RAW_NAME = doc.xpath(XPATH_NAME)
        RAW_SALE_PRICE = doc.xpath(XPATH_SALE_PRICE)
        RAW_CATEGORY = doc.xpath(XPATH_CATEGORY)
        RAW_ORIGINAL_PRICE = doc.xpath(XPATH_ORIGINAL_PRICE)
        RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY)

        NAME = ' '.join(''.join(RAW_NAME).split()) if RAW_NAME else None
        SALE_PRICE = ' '.join(''.join(RAW_SALE_PRICE).split()).strip() if RAW_SALE_PRICE else None
        CATEGORY = ' > '.join([i.strip() for i in RAW_CATEGORY]) if RAW_CATEGORY else None
        ORIGINAL_PRICE = ''.join(RAW_ORIGINAL_PRICE).strip() if RAW_ORIGINAL_PRICE else None
        AVAILABILITY = ''.join(RAw_AVAILABILITY).strip() if RAw_AVAILABILITY else None

        if not ORIGINAL_PRICE:
            ORIGINAL_PRICE = SALE_PRICE

        if page.status_code!=200:
            raise ValueError('captha')
        data = {
                'NAME':NAME,
                'SALE_PRICE':SALE_PRICE,
                'CATEGORY':CATEGORY,
                'ORIGINAL_PRICE':ORIGINAL_PRICE,
                'AVAILABILITY':AVAILABILITY,
                'URL':url,
                }

        return data
    except Exception as e:
        print e

def ReadAsin():
# AsinList = csv.DictReader(open(os.path.join(os.path.dirname(__file__),"Asinfeed.csv")))
AsinList = ['B0046UR4F4',
'B00JGTVU5A',
'B00GJYCIVK',
'B00EPGK7CQ',
'B00EPGKA4G',
'B00YW5DLB4',
'B00KGD0628',
'B00O9A48N2',
'B00O9A4MEW',
'B00UZKG8QU',]
extracted_data = []
for i in AsinList:
    url = "http://www.amazon.com/dp/"+i
    print "Processing: "+url
    extracted_data.append(AmzonParser(url))
    sleep(5)
f=open('data.json','w')
json.dump(extracted_data,f,indent=4)


if __name__ == "__main__":
ReadAsin()
票数 1
EN

Stack Overflow用户

发布于 2018-11-08 05:29:53

如果您需要定期浏览几个产品页面,我建议您添加一个场景英雄脚本,并使用https://pypi.org/project/fake-useragent/作为request中的"headers“。

否则,如果你只是偶尔需要下载评论,你可以使用https://reviewi.me。这是一个免费的基于web的工具,可用于多个Amazon网站,并允许以CSV、XLSX和JSON格式导出

票数 1
EN

Stack Overflow用户

发布于 2017-01-29 14:08:45

Beautiful是一个Python API,它允许您从页面中提取html数据,就像Amazon产品页面一样,并解析文件。此API应允许直接从页面获取评论部分。以下是文档的链接:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41917734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档