繁体   English   中英

Python-美丽汤选择仅返回[]

[英]Python - Beautiful Soup Select only returning []

我目前正在学习Udemy的Python教程(对Python来说是新手)。 我目前在“美丽的汤”部分,我们在忙于练习以减少作者在亚马逊上的书的价格。 我的代码如下:

import bs4, requests
url = 'https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

response = requests.get(url, headers=headers)
response.raise_for_status()
soup = bs4.BeautifulSoup(response.text, 'html.parser')
soup.select('#addToCart > a > h5 > div > div.a-column.a-span4.a-text-right.a-span-last > span.a-size-medium.a-color-price.header-price')

当我检查价格元素的路径时,可以看到以下内容:

<span class="a-size-medium a-color-price header-price"> 


            $25.45



    </span>

但是,当我通过soup.select复制并粘贴它并运行python命令时,仅返回带有[]即2个方括号的返回。 我应该得到第二个代码框的内容。

更新:在我输入问题的期间,它确实正确显示了结果,包装盒中的内容为$ 25.45,但是5分钟后,它又回到了仅包含[]方括号的结果。 我在代理服务器后面,并且尝试不通过代理服务器,结果没有变化。 我在执行response.raise_for_status()时也没有收到任何错误。 请能帮个忙吗?

(请记住,我不打算在屏幕上刮擦任何商业网站,我非常想将自己的学习应用于内部场景)

谢谢!

使CSS选择器过于复杂 ,使其变得脆弱-在很大程度上取决于页面布局。 您不必遍历完整的父子链来查找元素。 选择可以作为定位器依据的最可靠,最易读和最合适的点。 例如,在这种情况下,以下对我有用:

soup.select('#addToCart .header-price')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM