我試圖從下面的網站上抓取價格: https : //www.emma-sleep.com.au/diamond-hybrid/我想要的價格應該是674.55。
下面是我的代碼:
web_url = 'https://www.emma-sleep.com.au/diamond-hybrid/'
web_response = requests.get(web_url)
b_soup = BeautifulSoup(web_response.text, 'html.parser')
price=b_soup.find_all('span', {'class': 'installment__full-price'})
price
它會以某種方式回傳我 1000 的價格,這是錯誤的 [ $1,000.00 ]
有人可以告訴我哪里出錯了嗎?當我檢查 html 代碼時,價格似乎在“腳本”標簽中。
謝謝 :)
uj5u.com熱心網友回復:
所需的最小作業解決方案,其中 html dom <span data-price="674.55">$674.55</span>和所需的輸出是價格$674.55
代碼
from bs4 import BeautifulSoup
import time
from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')
driver.maximize_window()
time.sleep(8)
url = 'https://www.emma-sleep.com.au/diamond-hybrid/'
driver.get(url)
time.sleep(5)
soup = BeautifulSoup(driver.page_source, 'lxml')
price=soup.select_one('div.cell.small-6 span:nth-child(2)').text
print(price)
輸出
$674.55
uj5u.com熱心網友回復:
價格是用javascript計算的。為此,您需要使用像Selenium這樣的 API ,它首先在瀏覽器中呈現頁面,然后允許您訪問 HTML。
目標 html 標簽:
<span class="regular-price text-orange" id="product-price-3853">
<span class="price" data-price="674.55">$674.55</span>
</span>
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
web_url = 'https://www.emma-sleep.com.au/diamond-hybrid/'
s = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s)
# web driver goes to page
driver.get(web_url)
# to give time for the page to load
driver.implicitly_wait(3)
price = driver.find_element(By.XPATH, "//span[@class='regular-price text-orange']/span[@class='price']").text
print(price)
輸出:
$674.55
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/370850.html
