我有以下网页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)。我无法使用调试器但只运行它而没有看到“慢动作”中发生了什么。
提前感谢大家。
答案 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 ;.