使用 BeautifulSoup 将表抓取到数据框中

2024-02-12

我正在尝试从硬币目录中抓取数据。

其中一页 http://www.gcoins.net/en/catalog/view/45518。我需要刮这个数据 https://i.stack.imgur.com/1zqhW.png进入数据框

到目前为止我有这个代码:

import bs4 as bs
import urllib.request
import pandas as pd

source = urllib.request.urlopen('http://www.gcoins.net/en/catalog/view/45518').read()
soup = bs.BeautifulSoup(source,'lxml')

table = soup.find('table', attrs={'class':'subs noBorders evenRows'})
table_rows = table.find_all('tr')

for tr in table_rows:
    td = tr.find_all('td')
    row = [tr.text for tr in td]
    print(row)                    # I need to save this data instead of printing it 

它产生以下输出:

[]
['', '', '1882', '', '108,000', 'UNC', '—']
[' ', '', '1883', '', '786,000', 'UNC', '~ $3.99']
[' ', " \n\n\n\n\t\t\t\t\t\t\t$('subGraph55337').on('click', function(event) {\n\t\t\t\t\t\t\t\tLightview.show({\n\t\t\t\t\t\t\t\t\thref : '/en/catalog/ajax/subgraph?id=55337',\n\t\t\t\t\t\t\t\t\trel : 'ajax',\n\t\t\t\t\t\t\t\t\toptions : {\n\t\t\t\t\t\t\t\t\t\tautosize : true,\n\t\t\t\t\t\t\t\t\t\ttopclose : true,\n\t\t\t\t\t\t\t\t\t\tajax : {\n\t\t\t\t\t\t\t\t\t\t\tevalScripts : true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tevent.stop();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t", '1884', '', '4,604,000', 'UNC', '~ $2.08–$4.47']
[' ', '', '1885', '', '1,314,000', 'UNC', '~ $3.20']
['', '', '1886', '', '444,000', 'UNC', '—']
[' ', '', '1888', '', '413,000', 'UNC', '~ $2.88']
[' ', '', '1889', '', '568,000', 'UNC', '~ $2.56']
[' ', " \n\n\n\n\t\t\t\t\t\t\t$('subGraph55342').on('click', function(event) {\n\t\t\t\t\t\t\t\tLightview.show({\n\t\t\t\t\t\t\t\t\thref : '/en/catalog/ajax/subgraph?id=55342',\n\t\t\t\t\t\t\t\t\trel : 'ajax',\n\t\t\t\t\t\t\t\t\toptions : {\n\t\t\t\t\t\t\t\t\t\tautosize : true,\n\t\t\t\t\t\t\t\t\t\ttopclose : true,\n\t\t\t\t\t\t\t\t\t\tajax : {\n\t\t\t\t\t\t\t\t\t\t\tevalScripts : true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tevent.stop();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t", '1890', '', '2,137,000', 'UNC', '~ $1.28–$4.79']
['', '', '1891', '', '605,000', 'UNC', '—']
[' ', '', '1892', '', '205,000', 'UNC', '~ $4.47']
[' ', '', '1893', '', '754,000', 'UNC', '~ $4.79']
[' ', '', '1894', '', '532,000', 'UNC', '~ $3.20']
[' ', '', '1895', '', '423,000', 'UNC', '~ $2.40']
['', '', '1896', '', '174,000', 'UNC', '—']

但是当我尝试将其保存到 Dataframe 并导出到 Excel 时,它只包含最后一个值:

         0
0         
1         
2     1896
3         
4  174,000
5      UNC
6        —

Pandas 已经有一个内置方法可以将网络上的表格转换为数据框:

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

使用 BeautifulSoup 将表抓取到数据框中 的相关文章

随机推荐

  • App Engine Java API 页面大小

    为什么谷歌决定忽略pageSize参数以及为什么使用不同的页面大小时收集的项目的总体大小不同 这是一个例子 Appsactivity Activities List request service activities list setDr
  • 如何更改 UIView zPosition?

    我不明白如何更改视图的位置 我尝试这样做 但没有任何反应 void viewDidLoad super viewDidLoad UIView view UIView alloc initWithFrame CGRectMake 100 10
  • 如何使用 Clang 从 C++ 字符串生成 AST?

    我正在尝试使用 Clang 操作 C 源代码 但在发现 API 时遇到问题 我想获取一串 C 源代码并从中生成 AST 就像是 auto myAst clang parse auto x 1 1 有一个最小的工作示例吗 您可以尝试下一个代码
  • 为什么添加的子图层没有显示在屏幕截图中?

    我正在尝试找出 iPad 应用程序的某些 iOS 代码中的错误 在我们的一个视图中 我们添加了子图层以产生阴影并确保视图的底部具有圆角边缘 这是我们添加子层的代码 UIBezierPath maskPath UIBezierPath bez
  • 无效的路由名称,已在使用中:“admin_root”(ArgumentError)- ActiveAdmin 安装失败

    I ran rails g active admin install 并得到这个错误 Invalid route name already in use admin root ArgumentError You may have defin
  • 为什么java中所有对象都是动态创建的? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在一次采访中我被问到为什么java中的对象是动态创建的 我不明白这个问题 有人可以解释一下吗 此人可能指的是 Java 不像 C 那样知道堆
  • PHP $_SESSION 变量键中的保留字符

    我正在查看 PHP 会话文件的内部表示 我注意到会话密钥由管道字符分隔 在讨论我遇到的问题之前 让我先快速介绍一下会话文件的格式 至少 这是它在我的 Mac 上的格式化方式 10 9 4 PHP 5 4 24 会话文件格式 假设我有以下代码
  • 使用 Javascript 平均时间

    我正在使用 Phonegap 和 JQuery 构建一个应用程序 该应用程序以该格式存储 使用 window localStorage 一组时间 不超过 10 个 HH MM SS mm 列表中有许多 零 时间 例如 00 00 00 00
  • extjs - 自动加载 true 的存储不应在应用程序启动时加载

    我有一个链接到商店的网格autoLoad true 问题是商店会在应用程序启动时加载 即使视图是稍后通过菜单访问时创建的 我已在 Application js 和视图中引用了该存储 但我没有显式地实例化存储或视图 我不知道如何实现仅在视图需
  • 将 TabActivity 菜单与包含的 Activity 菜单合并

    我的应用程序的主要活动是 TabActivity 它包含一个 OptionsMenu 我定义了一些其他活动 进入选项卡 并且我想在每个活动中定义一个菜单 并将其菜单与主菜单合并 是否可以 是的 这是可能的 基本上 您只需将多个 xml 文件
  • 一种用子类组织和加载文件的干净方法

    我有一个父类 它提供用于操作硬件的抽象函数 以及一个充满类的目录 该类是该父类的子类 并提供特定于硬件的实现 例如 x86 函数 ARM 函数 我正在寻找一种 Pythonic 方式来导入目录中的文件并实例化它们 目前 父类位于顶级目录中
  • TensorFlow RuntimeError:在 SavedModel 中找不到与标签服务关联的 MetaGraphDef

    当我使用 simple save 保存模型时 当我尝试加载模型时出现运行时错误 保存的代码是 session Session inputs tf placeholder dtype tf float32 shape None height
  • 使用树状数据进行 pytest 嵌套参数化

    使用 pytest 我尝试测试像树一样的分层场景 让我们以文档结构为例 Document Chapter Paragraph 1 n 1 n 当文档包含多个章节时 一章包含多个段落 当开始测试新文档时 需要运行一些设置代码 当新的章节开始时
  • 改变跨度的类别

    我有两个div 如下所示 我想从div top2更改span s1的类名 但下面的代码不起作用 我怎样才能做到这一点 top1 s1 span myclass old toggleClass myclass new div span cla
  • 将android资源位图批量转换为不同密度的工具[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要在 Android 上发布后支持不同的显示密度 开发期间可绘制的 hdpi已增长至 160 个
  • 为 geom_smooth 线创建动态标签

    我有一个不断变化的 df 并且我正在对不同的值进行分组c 使用 ggplot2 我使用以下代码绘制它们 以获得具有多个线性回归线 geom smooth 的散点图 ggplot aes x a y b group c geom point
  • gcc 金丝雀:对 __stack_chk_guard 的未定义引用

    我正在尝试启用 gcc 的金丝雀生成 但我得到了对 stack chk guard 的未定义引用 来自 gcc 的 man 关于金丝雀的信息 mstack protector guard guard Generate stack prote
  • 接口与具体类

    下面我有一个 Person 接口 一个实现类和一个驱动程序类 该类用名称初始化 Person 并再次输出它 使用有什么好处 Person person new PersonImpl 代替 PersonImpl person new Pers
  • 如何在线程的执行中使用字典/字符串列表 - delphi

    我有一个线程类 TValidateInvoiceThread type TValidateInvoiceThread class TThread private FData TValidationData FInvoice TInvoice
  • 使用 BeautifulSoup 将表抓取到数据框中

    我正在尝试从硬币目录中抓取数据 有其中一页 http www gcoins net en catalog view 45518 我需要刮这个数据 https i stack imgur com 1zqhW png进入数据框 到目前为止我有这