http://www.harrods.com/accessories/handbags?viewall=yes
在这个网页上,我试图获得手袋的品牌名称,包名,款式,材质,颜色,原价以及促销价。
到目前为止,我有这段代码:
from urllib.request import urlopen
from bs4 import BeautifulSoup
saksurl="http://www.harrods.com/accessories/handbags?viewall=yes"
html = urlopen(saksurl)
bsObj = BeautifulSoup(html.read(),"html.parser")
for product in bsObj.findAll("ul",{"class":"products_row"}):
product_price = product.find("span",{"class":"price_all plp_price"}).get_text()
print((product.h3).get_text(),product_price)
我遇到了这些问题:
答案 0 :(得分:0)
- 将品牌名称与包装袋分开。名称
在带有品牌和名称的a
内,有一个span
,其中有两个from urllib.request import urlopen, Request
...
req = Request(saksurl)
req.add_header('Cookie', 'Country=US; Currency=USD;')
html = urlopen(req)
,一个带有品牌,一个带有名称。
您可以使用Firefox或Chrome中的开发人员工具轻松查看此类内容。右键单击一个元素,然后单击“检查[元素]'”。比看HTML更好。虽然看HTML也应该揭示这一点。
- 我出于某种原因以欧元获得价格(希望以美元计算)
顶部有一个国家/货币选择器。更改并检查Chrome中的“网络”标签后,我发现新请求中包含一个额外的Cookie。这导致了解决方案:
products_row
- 我没有得到一些行李的价格
每个li
可以包含多个行李,通常为3个,每个行李都在price_all
标记中。再次,仔细查看HTML结构。
- 将原始价格与销售价格分开
正常价格只有span
下的文字。促销价格还有两个was
个now
和<div class="color_c">
类。
- 如何获得袋子的颜色?
每个产品都有<a class="color_swatch">
个href
个标签。您可以从title
属性获取小圆形图片,href
属性中的颜色名称,以及该颜色中实际行李的图片与{{1}}密切相关并且可以从中计算出来。