簡體   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