2015-11-10 3 views
2

У меня есть следующая страница Product page, и я пытаюсь получить от нее ASIN (в данном случае ASIN = B014MHZ90M), и у меня нет подсказки о том, как ее получить со страницы.Как извлечь asin с страницы продукта amazon

Я использую 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). Я не мог использовать отладчик, но только запускал его, не видя, что происходит в «замедленном движении».

Спасибо всем заранее.

ответ

4

Рассматривая связанную страницу Amazon, номер ASIN появляется в разделе« Сведения о продукте ». Использование SCRAPY оболочки следующие действия

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

возвращается

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

Для отладки XPaths я всегда использую scrapy shell и Firebug для Firefox.

+0

Спасибо за ответ, но он по-прежнему не возвращает ASIN. Iv'e напечатал (resoponse.url) и получил следующую ссылку: [response.url] (http://www.amazon.com/PLAY-STORE-Lightweight-Heaproduct-reviewshone-Bluetooth/product-reviews/B014MHZ90M/ исх = sr_1_1/176-6294413-3388143? s = АГТ и т = UTF8 & QID = 1447148770 & стер = 1-1 & ключевые слова = Bluetooth & PAGESIZE = 50 & SortBy = последняя). Как я могу извлечь ASIN с этой страницы? –

+0

@LiorMagen, что вы сделали, чтобы получить ссылку, которую вы предоставили в response.url в своем комментарии? Мой xpath создает список, вторым элементом которого является значение, которое вы сказали вам, где ищете. Вы пробовали это в «scrapy shell»? – Steve

+0

Iv'e создал парсер для страницы продукта, а на странице продукта я использовал ваш код, и теперь он работает как шарм. Спасибо, Стив. –

4

можно извлечь B014MHZ90M из response.url

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

response.url.split ("/ др /") [1] = B014MHZ90M

response.url.split ("/ др/") [0] = http://www.amazon.com

1

Вы можете получить это с помощью URL-адреса.

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

URL-адрес продукта иногда начинается с «/ gp/product /» вместо «/ dp /». И возможно также, что добавьте URL-адрес продукта после домена amazon. –

0

Я использую это:

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

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

Amazon Стандартный Идентификационные номера (ASINs) являются уникальными блоками 10 букв и/или цифр, которые идентифицируют элементы.

Ваш лучший вариант и, вероятно, самый простой из них - запустить регулярное выражение по URL-адресу, ищущему 10-символьную строку между двумя «/».

'/\w{10}/' 

Вы можете просто опустить «/» от результата.

Смежные вопросы