Saya tidak dapat menemukan nilainya. lokasi nilai dalam html adalah (span 161 /span) Haruskah saya mencoba metode xpath untuk mendapatkan elemen? Atau saran yang lebih baik?

!pip install Selenium
from selenium import webdriver

# 要把chromedriver 放在同一層資料夾裡
browser = webdriver.Chrome(executable_path='./chromedriver.exe')

browser.get("https://shopee.tw/shop/10228173/search?page=0&sortBy=ctime")
source = browser.page_source

import time
import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(source)
browser.get("https://www.rakuten.com.tw/shop/watsons/product/956957/")
soup = BeautifulSoup(browser.page_source)
soup
products =[]
product = {}
#     product['網址'] = link

product['購買次數'] = soup.find('div',class_="b-container-child").span
products.append(product)
print(products)
    
0
DDYY 27 November 2021, 09:01
Bisakah Anda menunjukkan hasil yang Anda harapkan?
 – 
Bhavya Parikh
27 November 2021, 09:04
Jika ide Anda adalah menemukan item berdasarkan nama kelas, Anda dapat merujuk ke posting ini: stackoverflow.com/questions/5041008/…
 – 
Kheng
27 November 2021, 09:13
Output '購買次數': 樂天點數}] Tapi bukan nilai yang saya butuhkan. Saya membutuhkan nilai : 161 di halaman. Bagaimana saya bisa menggunakan kode corecct untuk mendapatkan nilai ? Terima kasih.
 – 
DDYY
27 November 2021, 09:13

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan headers untuk mendapatkan data lengkap dari soup dan Anda juga harus memilih elemen mana yang harus Anda temukan sehingga dari b-container-child kita harus memilih indeks 2nd dan darinya kita harus menemukan tag span terakhir dan kemudian akan mengembalikan 161 sebagai output.

import requests
from bs4 import BeautifulSoup
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}
res=requests.get("https://www.rakuten.com.tw/shop/watsons/product/956957/",headers=headers)

soup=BeautifulSoup(res.text,"html.parser")
all_data=soup.find_all("div",class_="b-container-child")[2]
main_data=all_data.find_all("span")[-1]
print(main_data.text)

Keluaran:

161
1
Bhavya Parikh 27 November 2021, 09:38
2
Terima kasih banyak. Saya melihat apakah saya menggunakan rentang untuk mendapatkan semua data, lalu mengambil nilai yang benar langkah demi langkah, saya bisa mendapatkannya. Ini sangat membantu!
 – 
DDYY
27 November 2021, 09:54