我正在嘗試從此站點中提取玩家資料 - https://boardgamegeek.com/boardgame/174430/Gloomhaven/stats。
from bs4 import BeautifulSoup as bs
import requests
url2 = "https://boardgamegeek.com/boardgame/174430/gloomhaven"
page3 = requests.get(url2)
s2 = bs(page3.content,"html.parser")
var2 = s2.find_all('span',{'class':'ng-scope ng-isolate-scope'})
當我嘗試使用此代碼時,它總是在 var2 處回傳一個空串列。我什至試圖訪問“span”所屬的“div”類,但我仍然得到一個空串列。為什么是這樣?
提前致謝。
uj5u.com熱心網友回復:
該 url 由 javascript 動態加載。如果您在瀏覽器中禁用了 javascript,那么您會注意到 url 中的內容消失了,這就是為什么您在 var2 處得到一個空串列的原因,因為 BeautifulSoup 無法獲取資料,因此您需要一個自動化工具,例如 selenium。在這里,我將 selenium 與 BeautifulSoup 一起使用。
由于'class':'ng-scope ng-isolate-scope'僅選擇一個元素,因此您需要呼叫find方法。
腳本
from bs4 import BeautifulSoup
import time
from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')
driver.maximize_window()
time.sleep(8)
url = 'https://boardgamegeek.com/boardgame/174430/gloomhaven/stats'
driver.get(url)
time.sleep(5)
soup = BeautifulSoup(driver.page_source, 'lxml')
var2 = soup.find('span',{'class':'ng-scope ng-isolate-scope'}).text
print(var2)
輸出
1–4
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/372564.html
