首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用soup.select ?我做错了什么?

如何使用soup.select ?我做错了什么?
EN

Stack Overflow用户
提问于 2020-05-01 21:51:18
回答 2查看 63关注 0票数 0

我希望我的程序能在亚马逊上获得产品的价格。我正在尝试用soup.select来做这件事,但是失败了( soup.find也还没成功)。在商品价格上单击鼠标右键,将显示以下html代码:

代码语言:javascript
复制
<span id="price_inside_buybox" class="a-size-medium a-color-price">
    ILS&nbsp;53.35
</span>

这是我的代码,我做错了什么?我应该如何正确使用soup.select

代码语言:javascript
复制
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")) 

编辑:我的输出为空列表或无

EN

回答 2

Stack Overflow用户

发布于 2020-05-01 23:42:40

这将是一个更好和更干净的解决方案,因为如果亚马逊改变了它的html,不管是什么原因,你的脚本不再工作,使用亚马逊api。

https://docs.aws.amazon.com/AWSECommerceService/latest/DG/Welcome.html

票数 1
EN

Stack Overflow用户

发布于 2020-05-01 22:11:26

您需要添加user_agent并将解析器更改为lxml。如果没有lxml解析器,则需要使用以下命令进行安装

pip install lxml

代码

代码语言:javascript
复制
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())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61543789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档