首页 > 解决方案 > Beautiful Soup(代码正在运行)现在只返回某些标签

问题描述

几周前我正在抓取这个网站,但有些代码不再有效。

此代码按预期返回所有内容:

from bs4 import BeautifulSoup
import requests
url = 'https://www.sportsbookreview.com/betting-odds/nfl-football/consensus/'
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml")
soup.find_all('div', {'class': 'hUMQK _3JPYB'})

但是,当对下面的代码执行查找全部时,它现在返回一个空列表并且它曾经可以工作。网页 HTML 中似乎没有任何变化

soup.find_all('div', {'class': '_3h0tU'})

“div”标签的 HTML 图像

标签: pythonhtmlweb-scrapingbeautifulsouplxml

解决方案


因为我不知道网站是否改变了填充方式,但如果允许页面加载时间则可以工作。使用 selenium 检索就好了。似乎内容是 JS 加载的。

from selenium import webdriver

URL = "https://www.sportsbookreview.com/betting-odds/nfl-football/consensus/"
d = WebDriver.Chrome()
d.get(URL)
for item in d.find_elements_by_css_selector("._3h0tU"):
    Print(item.Text)
    d.quit()

推荐阅读