繁体   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