如何使用 BeautifulSoup 抓取页面?页面源与检查元素不匹配

2024-02-24

我正在尝试从中抓取一些东西这个梦幻篮球页面 http://fantasy.espn.com/basketball/league/scoreboard?leagueId=633975。我使用 Python 3.5+ 中的 BeautifulSoup 来执行此操作。

source_code = requests.get('http://fantasy.espn.com/basketball/league/standings?leagueId=633975')
plain_text = source_code.text
soup = BeautifulSoup(plain_text, 'lxml')

首先,我想将 9 个类别的标题抓取到一个 Python 列表中。所以我的清单应该是这样的categories = [FG%, FT%, 3PM, REB, AST, STL, BLK, TO, PTS].

我希望做的事情如下:

tableSubHead = soup.find_all('tr', class_='Table2__header-row')
tableSubHead = tableSubHead[0]
listCats = tableSubHead.find_all('th')
categories = []
for cat in listCats:
  if 'title' in cat.attrs:
  categories.append(cat.string)

但是,那soup.find_all('tr', class_='Table2__header-row')返回一个空列表而不是我想要的表行元素。我怀疑这是因为当我查看页面源代码时,它与Chrome开发工具中的Inspect Element完全不同。我知道这是因为 Javascript 动态更改页面上的元素,但我不确定解决方案是什么。


你面临的问题是因为这个网站是一个网络应用程序,这意味着必须运行 javascript 才能生成你所看到的内容,你不能运行 javascriptrequest,这就是我为了得到结果所做的事情selenium它会打开一个无头浏览器,并通过等待一段时间来使 JavaScript 首先运行:

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

# source_code = requests.get('http://fantasy.espn.com/basketball/league/standings?leagueId=633975')

options = webdriver.ChromeOptions()
options.add_argument('headless')
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(chrome_options=options, desired_capabilities=capa)
driver.set_window_size(1440,900)
driver.get('http://fantasy.espn.com/basketball/league/standings?leagueId=633975')
time.sleep(15)

plain_text = driver.page_source
soup = BeautifulSoup(plain_text, 'lxml')

soup.select('.Table2__header-row') # Returns full results.

len(soup.select('.Table2__header-row')) # 8

这种方法将允许您运行设计为网络应用程序的网站,并极大地扩展您的功能。 - 您甚至可以添加要执行的命令,例如滚动或单击以在航班上加载更多源。

Use pip install selenium安装硒。如果您喜欢 Firefox,还允许您使用该浏览器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 BeautifulSoup 抓取页面?页面源与检查元素不匹配 的相关文章

  • 如何打印前面有一定数量空格的整数?

    C has printf Xd Y 它只打印整数 X 并使其在控制台窗口上占据 Y 空格 例如 printf 3d 10 console 10 printf 5d 5 console 5 我如何在 python 3 中使用它 This pr
  • 在 SQLAlchemy 中,过滤器是在连接之前还是之后应用?

    使用 SQLAlchemy 我执行如下查询 import models as m import sqlalchemy as sa s session maker q s query m ShareCount m Article join m
  • 是否可以在 IPython 控制台中显示 pandas 样式?

    是否可以显示熊猫风格 https pandas pydata org pandas docs stable user guide style html在 iPython 控制台中 Jupyter 笔记本中的以下代码 import panda
  • 获取字符串模板中所有标识符列表的函数(Python)

    对于标准库string template在Python中 有没有一个函数可以获取所有标识符的列表 例如 使用以下 xml 文件
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • 使用 python 从 CSV 创建字典

    我有一个 CSV 格式的文件 其中 A B 和 C 是标题 我如何以Python方式将此CSV转换为以下形式的字典 A 1 B 4 C 7 A 2 B 5 C 8 A 3 B 6 C 9 到目前为止我正在尝试以下代码 import csv
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • matplotlib vlines 图中未应用 y 轴的最小值

    我正在 matplotlib 中绘制 vlines 图 数据集中的所有 y 值如下 gt 0 我希望 y 轴最底部的刻度能够读取0 但相反 我得到 500 这是代码 usr bin env python import numpy as np
  • 列表中的特定范围(python)

    我有一个从文本字符串中提取的整数列表 因此当我打印该列表 我称之为test I get 135 2256 1984 3985 1991 1023 1999 我想打印或制作一个仅包含特定范围内的数字的新列表 例如1000 2000之间 我尝试
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 本地主机上的 Google App Engine GQL 查询

    我正在 Google App Engine Windows 上的 SDK 版本 1 7 0 上开发一个应用程序 我需要经常测试该应用程序 并且此测试涉及数据存储上的大量 GQL 查询 您可以在 App Engine 管理界面的浏览器中在线运
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • 将二进制数转换为包含每个二进制数的数组

    我试图将二进制值转换为每个 1 0 的列表 但我得到默认的二进制值而不是列表 我有一个字符串 我将每个字符转换为二进制 它给了我一个列表 其中每个字符都有一个字符串 现在我试图将每个字符串拆分为值为 0 1 的整数 但我什么也得不到 if
  • 美丽的汤刮 - 登录凭据不起作用

    尝试使用登录凭据抓取页面 payload email gmail com password urls login url https www spotrac com signin url https www spotrac com nba
  • 如何使 Django 自定义管理命令参数不再需要?

    我正在尝试在 django 中编写自定义管理命令 如下所示 class Command BaseCommand def add arguments self parser parser add argument delay type int

随机推荐

  • 如何将我的应用程序设置为始终以 root OSX 身份运行

    我正在开发一个 OSX 应用程序 它的某些功能需要 ROOT 权限 我想出了如何以 root 身份调试我的应用程序 简单地在方案中 但我希望用户以 root 身份运行它 这样他们就可以访问它的功能 我怎样才能做到这一点 如果它是典型的 OS
  • 以下载方式提供 PHP 文件,而不是执行它们

    我最近在我的机器上安装了 nginx 和 php 7 0 16 但由于某种原因 nginx 下载 php 文件 而不是执行它们 我已经花了几天时间并实施了在线提供的所有解决方案 但一切都是徒劳的 我的 nginx conf 是 worker
  • 如何克隆值输入文件

    如何克隆文件输入字段的值属性 像这样的事情
  • React 中现有状态转换错误期间无法更新

    在我的渲染 return 中我有这些
  • 如何更改 Youtube 嵌入式播放器中正在播放的视频?

    我想制作一个播放列表 点击每个播放列表 li 将更改下面的视频链接 该列表将如下所示 video1 li li a href MzfAvHlIVjE hl en fs 1 rel 0 color1 0x3a3a3a color2 0x999
  • 如何找到图中所有顶点不相交的路径?

    假设图中有 3 个目标节点 顶点不相交路径意味着路径中除了末端节点之外没有任何相同的节点 对于任意一个节点 比如节点 i 如何找到从节点 i 到三个目标节点的所有顶点不相交路径 您可以通过在适当构造的图中将其简化为最大流问题来解决此问题 想
  • C++:如何实现多态对象创建器来填充表

    我有一个可以调整大小的表格小部件对象set num col int and set num row int 对每个函数的调用都会调用resize table 填充小部件的函数table cell的对象 然而 我有两种多态性类型的细胞 tab
  • 从图中删除注释

    我有一个包含情节的图形用户界面 在此图中我添加了注释 当使用 GUI 更改绘图数据时 旧注释将保留 新注释将绘制在旧注释之上 所以我需要删除旧的注释 我尝试了以下代码 但没有效果 set 0 showhiddenhandles on loo
  • libGDX 项目无法加载库 liblwjgl.dylib

    新的 libGDX 项目在运行桌面项目时无法加载库 liblwjgl dylib Exception in thread main java lang UnsatisfiedLinkError Can t load library var
  • 从 Node 中删除 null 属性和空子节点

    我有一个Node http groovy codehaus org api groovy util Node html我想删除所有null在将其写入文件之前 递归地删除属性和空子项 我下面的内容有效 但似乎应该有一个内置方法 我错过了什么吗
  • 谷歌驱动器 API v3 创建文件夹失败无提示

    通过 OAuth 成功进行全范围身份验证后 https www googleapis com auth drive 我根据示例创建一个文件夹创建文件夹 https developers google com drive v3 web fol
  • Java 2D 碰撞?

    大家好 我正在制作一个 2D java 游戏 我正在尝试找出如何制作一个好的碰撞代码 我目前正在使用以下代码 public void checkCollision Rectangle player rectangle new Rectang
  • CMake 将共享库链接到静态库

    我正在将 AutoTools 项目移植到 CMake 自动工具的作用 构建一些静态库 构建一些共享库并将静态库链接到共享库 构建一个可执行文件 将其链接到共享库 我用 CMake 做了什么 构建一些静态库 add library stati
  • JavaFX 中的 ListView 样式

    我有一个列表视图 我想更改背景颜色和文本填充 我尝试过执行以下操作 playlistView setStyle fx background color blue fx text fill black 但是 这行不通 但是 以下内容正在起作用
  • ADO.NET 中 SqlConnection (SQL-Server) 的 SPID

    我可以得到一个SPID from a SqlConnection对象 SQL Server 数据库 中ADO NET 连接对象在其生命周期内的 SPID 是否始终相同 select SPID给你 spid 它应该是常量 但如果您有连接池 则
  • '#selector' 指的是未暴露给 Objective-C 的方法

    新的 Xcode 7 3 通过 addTarget 传递参数通常对我有用 但在这种情况下它会在标题中抛出错误 有任何想法吗 当我尝试将其更改为 objc 时 它会抛出另一个错误 谢谢你 cell commentButton addTarge
  • jquery:如何获取id属性的值?

    基本的jquery问题 我有一个选项元素如下
  • 如何在 SignalR hub 的 Unity IoC 容器中注入依赖项?

    我有一个在 ASP NET MVC 5 框架之上用 c 编写的应用程序 我实施了Unity Mvc https www nuget org packages Unity Mvc 进入我的项目 现在 我正在尝试将依赖项对象注入到我的Signa
  • 将表格放入 Bootstrap 弹出窗口

    我有一个 Bootstrap 弹出窗口 我试图将一个表格放入其中 但当我单击它时它不会显示 这是第一次在弹出窗口中尝试 HTML 所以我不确定如何正确执行它 谢谢 function data toggle popover popover h
  • 如何使用 BeautifulSoup 抓取页面?页面源与检查元素不匹配

    我正在尝试从中抓取一些东西这个梦幻篮球页面 http fantasy espn com basketball league scoreboard leagueId 633975 我使用 Python 3 5 中的 BeautifulSoup