[英]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.