[英]How to use soup.select and what am I doing wrong?
我希望我的程序能够在亚马逊上获得产品的价格。 我正在尝试使用soup.select
来做到这一点并且失败了(还没有使用soup.find
进行管理)。 右键单击检查项目价格给我这个 html 代码:
<span id="price_inside_buybox" class="a-size-medium a-color-price">
ILS 53.35
</span>
这是我的代码,我做错了什么,我应该如何正确使用soup.select
?
import bs4, requests,
amazonlink = "https://www.amazon.com/UNSCENTED-PURITO-Ingredients-sunscreen-Lightweight/dp/B07WQXP3D8/ref=as_li_ss_tl?crid=V29993T4TI1W&dchild=1&keywords=purito+comfy+water+sunblock&qid=1585239706&sprefix=purito+comfy,aps,299&sr=8-2&linkCode=sl1&tag=drdrayzday-20&linkId=7231993512a225ded0b474b852d105bc&language=en_US"
res = requests.get(amazonlink)
soup = bs4.BeautifulSoup(res.text,'html.parser') #creates soup object
print(soup.select("price_inside_buybox"))
print(soup.find("span",id="price_inside_buybox"))
编辑:我的 output 是一个空列表或没有
这将是更好和更清洁的解决方案,因为如果亚马逊更改其 html 以使您的脚本不再工作,请使用亚马逊 api。
https://docs.aws.amazon.com/AWSECommerceService/latest/DG/Welcome.html
您需要添加user_agent
并将解析器更改为lxml
。 如果您没有lxml
解析器,则需要使用
pip 安装 lxml
代码:
import bs4, requests
amazonlink = "https://www.amazon.com/UNSCENTED-PURITO-Ingredients-sunscreen-Lightweight/dp/B07WQXP3D8/ref=as_li_ss_tl?crid=V29993T4TI1W&dchild=1&keywords=purito+comfy+water+sunblock&qid=1585239706&sprefix=purito+comfy,aps,299&sr=8-2&linkCode=sl1&tag=drdrayzday-20&linkId=7231993512a225ded0b474b852d105bc&language=en_US"
headers = {'User-Agent':'Mozilla/5.0'}
res = requests.get(amazonlink,headers=headers)
soup = bs4.BeautifulSoup(res.text,'lxml')
print(soup.select_one("#price_inside_buybox").text.strip())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.