我正在尝试学习如何进行网页抓取,并且抓取似乎是一个不错的起点。 我想出了如何从标签中抓取基本文本信息,但是现在我想从标签本身中抓取信息。下面是一个例子。 我正在使用以下网址:https://www.net-a-porter.com/ca/en/product/1100692/chloe/roy-day-small-leather-and-suede-shoulder-bag
我想抄一下袋子的名称和价格。查看DOM结构时,有2个标签:
<h2 class="product-name">
<nap-price class="product-price" price:{...}>
我想在hap-price标签内抓取h2标签和price对象的文本值
并生成这样的对象:
{
name: "from <h2> tag"
price: "price object from <nap-price> tag"
}
当前,我可以从h2标签中获取名称,并且可以获取整个nap-price标签,但是如何仅针对价格对象呢?然后将它们聚合到一个对象中?
答案 0 :(得分:2)
您可以使用::attr()
,传递您想要其值的属性的名称。然后将JSON字符串解析为Python对象:
import json
price = response.css('nap-price::attr(price)').get()
obj = json.loads(price)
print(obj)
# {"currency":"USD","divisor":100,"amount":185000}