gpt4 book ai didi

python - Beautifulsoup 不返回页面的完整 HTML

转载 作者:行者123 更新时间:2023-12-03 23:21:38 25 4
gpt4 key购买 nike

我已经在该网站上挖掘了一段时间,但无法找到解决我的问题的方法。我对网络抓取相当陌生,并试图使用漂亮的汤从网页中简单地提取一些链接。

url = "https://www.sofascore.com/pt/futebol/2018-09-18"
page = urlopen(url).read()
soup = BeautifulSoup(page, "lxml")
print(soup)

在最基本的层面上,我要做的就是访问网站内的特定标签。我可以自己解决其余的问题,但我挣扎的部分是我正在寻找的标签不在输出中。

例如:使用内置的 find() 我可以获取以下 div 类标签:
class="l__grid js-page-layout"

然而,我实际上要寻找的是嵌入在树中较低级别的标记的内容。
js-event-list-tournament-events

当我对较低级别的标签执行相同的查找操作时,我没有得到任何结果。

使用基于 Azure 的 Jupyter Notebook,我尝试了许多解决 stackoverflow 上类似问题的解决方案,但没有成功。

谢谢!
肯尼

最佳答案

该页面使用JS动态加载数据,因此您必须使用selenium。检查下面的代码。
注意你必须安装 selenium 和 chromedrive (解压文件并复制到python文件夹中)

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = "https://www.sofascore.com/pt/futebol/2018-09-18"
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)
time.sleep(3)
page = driver.page_source
driver.quit()
soup = BeautifulSoup(page, 'html.parser')
container = soup.find_all('div', attrs={
'class':'js-event-list-tournament-events'})
print(container)

或者你可以使用他们的 json api
import requests
url = 'https://www.sofascore.com/football//2018-09-18/json'
r = requests.get(url)
print(r.json())

关于python - Beautifulsoup 不返回页面的完整 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com