使用 BeautifulSoup python 3.6 抓取数据时网页值丢失

2024-03-12

我正在使用下面的脚本来删除“股票报价”数据http://fortune.com/fortune500/xcel-energy/ http://fortune.com/fortune500/xcel-energy/,但其给出空白。

我也使用过硒驱动程序,但同样的问题。请帮忙解决这个问题。

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd

r = requests.get('http://fortune.com/fortune500/xcel-energy/')
soup = bs(r.content, 'lxml') # tried: 'html.parser

data = pd.DataFrame(columns=['C1','C2','C3','C4'], dtype='object', index=range(0,11))
for table in soup.find_all('div', {'class': 'stock-quote row'}):
    row_marker = 0
    for row in table.find_all('li'):
    column_marker = 0
    columns = row.find_all('span')
    for column in columns:
        data.iat[row_marker, column_marker] = column.get_text()
        column_marker += 1
    row_marker += 1
print(data)

输出获取:

              C1    C2   C3   C4
0       Previous Close:         NaN  NaN
1           Market Cap:   NaNB  NaN    B
2   Next Earnings Date:         NaN  NaN
3                 High:         NaN  NaN
4                  Low:         NaN  NaN
5         52 Week High:         NaN  NaN
6          52 Week Low:         NaN  NaN
7     52 Week Change %:   0.00  NaN  NaN
8            P/E Ratio:    n/a  NaN  NaN
9                  EPS:         NaN  NaN
10      Dividend Yield:    n/a  NaN  NaN

您要查找的数据似乎可以在此处找到API端点 http://fortune.com/api/v2/company/xel/expand/1:

import requests

response = requests.get("http://fortune.com/api/v2/company/xel/expand/1")
data = response.json()
print(data['ticker'])

仅供参考,在硒自动化浏览器中打开页面时,您只需要确保在解析 HTML 之前等待所需的数据出现 http://selenium-python.readthedocs.io/waits.html#explicit-waits,工作代码:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd


url = 'http://fortune.com/fortune500/xcel-energy/'
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

driver.get(url)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".stock-quote")))

page_source = driver.page_source
driver.close()

# HTML parsing part
soup = BeautifulSoup(page_source, 'lxml') # tried: 'html.parser

data = pd.DataFrame(columns=['C1','C2','C3','C4'], dtype='object', index=range(0,11))
for table in soup.find_all('div', {'class': 'stock-quote'}):
    row_marker = 0
    for row in table.find_all('li'):
        column_marker = 0
        columns = row.find_all('span')
        for column in columns:
            data.iat[row_marker, column_marker] = column.get_text()
            column_marker += 1
        row_marker += 1
print(data)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 BeautifulSoup python 3.6 抓取数据时网页值丢失 的相关文章

  • 在 __init__ 中使用属性设置器

    如何在中使用属性设置器 init 没有 pylint 抱怨该属性已在外部定义 init 例如 以下代码仅产生一个异常 该异常被底部的 try 子句捕获 class CircleNotUsingSetterInInit object def
  • Cython:如何使用 C++ 类的用户定义转换?

    赛通的文档 https cython readthedocs io en latest src userguide wrapping CPlusPlus html overloading operators似乎对如何用户定义的转换 http
  • Django - 在设置中使用反向 url 映射

    例如 django 设置文件中的一些选项是 urlLOGIN URL and LOGIN REDIRECT URL 是否可以避免对这些 url 进行硬编码 而使用反向 url 映射 目前 这确实是我发现自己在多个地方编写相同网址的唯一地方
  • Py2Exe“缺少以下模块”

    使用 Py2Exe 时 我收到警告 例如 The following modules appear to be missing Crypto Crypto Cipher Crypto Hash Padding 由于找不到这些模块 导致 EX
  • python pandas 标记如果列中每个值有多个唯一行

    在下面的数据框中 我有三列 Code Category Count X A 89734 X A 239487 Y B 298787 Z B 87980 W C 098454 我需要添加一列 如果一个类别有多个唯一代码 如上例中的 B 它会获
  • Python:在 Plotly 中的图形上方创建注释空间

    我想在图中创建额外的注释空间 请参阅附图中的绿色区域 目前 y 轴定义了绘图的高度 我可以将绘图推到超出 y max 限制 在某个点 在图像中标记为红色 之后隐藏 y 轴吗 我尝试避免轴到达 评论部分 绿色 谢谢你 在此输入图像描述 htt
  • 无法获取POST参数

    我正在使用 WebApp2 作为框架在 Python 中开发一个 Web 应用程序 我无法获取通过填写表单提交的http POST请求参数 这是我创建的表单的 HTML 代码
  • Python中定义类变量时如何引用类方法?

    我有以下类和类变量 class MyClass class var 1 a class var 2 run class method classmethod def run class method cls return ran class
  • 无法在python中使用selenium打开IE

    我正在 Windows 10 计算机 Internet Explorer 11 python 3 6 selenium 3 4 3 和 IEDriverServer 3 5 上运行 我正在尝试使用以下代码打开 IE from seleniu
  • Python 的局限性是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我花了几天时间阅读有关 C 和 Python 的内容 发现 Python 非常简单且易于学习 所以我想知道它真的值得花时间学习吗 或者我应该花时
  • 使用 PIL 对图像进行着色,同时保持透明度?

    好吧 情况是这样的 我想使用 Python 图像库来 主题化 图像 如下所示 Theme color 33B5E5 IN OUT 我使用 ImageMagick 命令得到了结果 convert image png colorspace gr
  • Tkinter 嵌套主循环

    我正在写一个视频播放器tkinter python 所以基本上我有一个可以播放视频的 GUI 现在 我想实现一个停止按钮 这意味着我将有一个mainloop 对于 GUI 还有另一个嵌套mainloop 播放 停止视频并返回 GUI 启动窗
  • python3导入找不到模块

    我正在尝试测试书中的一个例子 我得到了一个ImportError 该示例开始如下 from tkinter import from PP4E Gui Tools widgets import frame button entry 如果我放一
  • R rvest 检索空表

    我正在尝试两种策略来从网络表中获取数据 library tidyverse library rvest webpage lt read html https markets cboe com us equities market stati
  • 为什么 django-rest-frameworks request.data 有时是不可变的?

    在我宁静的CreateAPIView我变异我的request data字典 有时我会收到测试未捕获的错误 This QueryDict instance is immutable 例如这 class CreateView CreateAPI
  • 无法在 AWS Lambda 上使用请求模块

    我需要在每天运行一次的 python 脚本中进行休息调用 我无法使用 AWS Lambda 将 requests 包打包到我的 python 包中 我收到错误 无法导入模块 lambda function 没有名为 lambda funct
  • python lxml 我如何在项目名称中使用标签?

    我需要使用项目的特殊名称构建 xml 文件 这是我当前的代码 from lxml import etree import lxml from lxml builder import E wp E wp tmp wp title print
  • 如何在 Jinja2 中包含具有相对路径的模板

    我正在尝试在模板中包含同一文件夹中的另一个模板 为此 我只是在做 import header jinja2 问题是我不断收到TemplateNotFound error 我的模板文件夹看起来像 myProject templates arb
  • 如何通过python将python字典存储到mysql数据库中

    我试图通过将字典转换为字符串然后尝试插入来将以下字典存储到 mysql DB 中 但出现以下错误 如何解决这个问题 或者有其他方法将字典存储到 mysql DB 中吗 dic office component office Word2010
  • 为调色板图像分配不同的调色板索引

    我正在用 Python 和 Pygame 编写游戏 为此 图形将采用旧视频游戏机 如 NES 的风格 因此 图形由具有 2 位 4 色 图像的单个图块集文件组成 我希望在加载这些图像时能够为这些图像分配任意 4 色调色板 我想要做的是使用

随机推荐