簡體   English   中英

BeautifulSoup找不到網頁上存在的類?

[英]BeautifulSoup can't find class that exists on webpage?

所以我試圖抓取以下網頁https://www.scoreboard.com/uk/football/england/premier-league/

具體是預定和結束的結果。 因此,我試圖尋找class = "stage-finished" or "stage-scheduled"的元素。 但是,當我刮擦網頁並打印出page_soup包含的內容時,它不包含這些元素。

我找到另一個SO問題並回答說這是因為它是通過AJAX加載的,我需要查看chrome dev工具上的網絡選項卡下的XHR,找到加載必要數據的文件,但是看起來不像到那里?

import bs4
import requests
from bs4 import BeautifulSoup as soup
import csv
import datetime

myurl = "https://www.scoreboard.com/uk/football/england/premier-league/"
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
page = requests.get(myurl, headers=headers)

page_soup = soup(page.content, "html.parser")

scheduled = page_soup.select(".stage-scheduled")
finished = page_soup.select(".stage-finished")
live = page_soup.select(".stage-live")
print(page_soup)
print(scheduled[0])

上面的代碼當然會拋出錯誤,因為調度的數組中沒有內容。

我的問題是,我如何獲取我正在尋找的數據?

我將XHR文件的內容復制到記事本中,並搜索了stage-finished和其他標簽,但沒有找到任何內容。 我在這里容錯了嗎?

該頁面是JavaScript呈現的。 你需要Selenium。 以下是一些代碼:

from selenium import webdriver

url = 'https://www.scoreboard.com/uk/football/england/premier-league/'

driver = webdriver.Chrome()
driver.get(url)
stages = driver.find_elements_by_class_name('stage-scheduled')
driver.close()

或者您可以將driver.content傳遞給BeautifulSoup方法。 像這樣:

soup = BeautifulSoup(driver.page_source, 'html.parser')

注意:您需要先安裝webdriver。 我安裝了chromedriver。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM