如何从亚马逊产品页面中提取asin

时间:2015-11-10 08:24:46

标签: python python-3.x web-crawler scrapy amazon

我有以下网页Product page并且我正在尝试从中获取ASIN(在这种情况下ASIN = B014MHZ90M)并且我没有关于如何从页面获取它的线索。

我正在使用Python 3.4,Scrapy和以下代码:

hxs = Selector(response)
product_name = "".join(hxs.xpath('//span[contains(@class,"a-text-ellipsis")]/a/text()').extract())
product_model = hxs.xpath('//body//div[@id="buybox_feature_div"]//form[@method="post"]/input[@id="ASIN"/text()').extract()

这样我就没有得到必填字段(ASIN号码) 1.为了获得产品型号(ASIN),我该怎么做?

2.有没有办法调试这样的代码(我正在使用PyCharm)。我无法使用调试器但只运行它而没有看到“慢动作”中发生了什么。

提前感谢大家。

5 个答案:

答案 0 :(得分:4)

您可以从response.url中提取B014MHZ90M

response.url.split("/dp/")[1]

response.url.split(“/ dp /”)[1] = B014MHZ90M

response.url.split(“/ dp /”)[0] = http://www.amazon.com

答案 1 :(得分:3)

查看您链接的亚马逊页面,ASIN编号显示在“产品详细信息”部分中。使用scrapy shell以下xpath

response.xpath('//li[contains(.,"ASIN: ")]//text()').extract()

返回

[u'ASIN: ', u'B014MHZ90M']

为了调试XPATH,我总是使用scrapy shell和Firebug for Firefox。

答案 2 :(得分:1)

我用这个:

re.match("http[s]?://www.amazon.(\w+)(.*)/(dp|gp/product)/(?P<asin>\w+).*", url, flags=re.IGNORECASE)

答案 3 :(得分:0)

你可以从网址获得。

r = re.search('www.amazon.com/dp/(.+)/', response.url)
print r.group(1)

答案 4 :(得分:0)

https://www.amazon.com/gp/seller/asin-upc-isbn-info.html

  

亚马逊标准识别码(ASIN)是10的唯一块   标识项目的字母和/或数字。

您最好的选择,可能最简单的选择是在URL上运行正则表达式,在两个&#34; /&#34;之间寻找10个字符串。

'/\w{10}/'

然后您可以简单地从结果中省略&#34; /&#34 ;.