soup.find 找不到元素
couldn't find the element by soup.find
我找不到值。 html 中的值位置是 (span 161 /span)
我应该尝试 xpath 方法来获取元素吗?或者更好的建议?
!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)
您可以使用 headers
从 soup
获取完整数据,您还必须 select 您必须从 b-container-child
中找到哪个元素,我们必须 select 2nd
索引,我们必须从中找到最后一个 span
标签,然后它将 return 161
作为输出。
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)
输出:
161
我找不到值。 html 中的值位置是 (span 161 /span) 我应该尝试 xpath 方法来获取元素吗?或者更好的建议?
!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)
您可以使用 headers
从 soup
获取完整数据,您还必须 select 您必须从 b-container-child
中找到哪个元素,我们必须 select 2nd
索引,我们必须从中找到最后一个 span
标签,然后它将 return 161
作为输出。
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)
输出:
161