使用 beautifulsoup 解析 HTML 页面

2023-12-07

我开始使用 beautifulsoup 来解析 HTML。
例如对于网站“http://en.wikipedia.org/wiki/PLCB1"

import sys
sys.setrecursionlimit(10000)

import urllib2, sys
from BeautifulSoup import BeautifulSoup

site= "http://en.wikipedia.org/wiki/PLCB1"
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)

table = soup.find('table', {'class':'infobox'})
#print table
rows = table.findAll("th")
for x in rows:
    print "x - ", x.string

在某些有 url 的情况下,我得到的输出为 None 。为什么会这样呢?

输出 :

x -  Phospholipase C, beta 1 (phosphoinositide-specific)
x -  Identifiers
x -  None
x -  External IDs
x -  None
x -  None
x -  Molecular function
x -  Cellular component
x -  Biological process
x -  RNA expression pattern
x -  Orthologs
x -  Species
x -  None
x -  None
x -  None
x -  RefSeq (mRNA)
x -  RefSeq (protein)
x -  Location (UCSC)
x -  None

例如,在 Location 之后,还有一个包含“pubmed search”但显示为 None 的内容。我想知道为什么会这样。

and
第二:有没有办法在字典中获取 th 和相应的 td 以便于解析?


Element.string仅当有文本时才包含值直接在元素中。不包括嵌套元素。

如果您使用的是 BeautifulSoup 4,请使用Element.stripped_strings反而:

print ''.join(x.stripped_strings)

对于 BeautifulSoup 3,您需要搜索所有文本元素:

print ''.join([unicode(t).strip() for t in x.findAll(text=True)])

如果你想结合<th> and <td>将元素放入字典中,您将遍历所有元素<th>元素,然后使用.findNextSibling()来定位对应的<td>元素,并将其与上面的结合起来.findAll(text=True)为自己建立一本字典的技巧:

info = {}
rows = table.findAll("th")
for headercell in rows:
    valuecell = headercell.findNextSibling('td')
    if valuecell is None:
        continue
    header = ''.join([unicode(t).strip() for t in headercell.findAll(text=True)])
    value = ''.join([unicode(t).strip() for t in valuecell.findAll(text=True)])
    info[header] = value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 beautifulsoup 解析 HTML 页面 的相关文章

  • 在 Python 中绘制分类数据的三个维度

    我的数据包含三个我试图可视化的分类变量 城市 五个之一 职业 四种之一 血型 四种之一 到目前为止 我已经成功地以一种我认为易于使用的方式对数据进行了分组 import numpy as np pandas as pd Make data
  • 使用时间序列数据和scaleBand指定D3条形图上的刻度

    我尝试为具有时间序列数据的 d3 v4 条形图指定多个刻度和多个刻度标签 如下图所示 基于本教程 https bl ocks org zigahertz 1ee4965ff76514517bb7ce6af21e5d44我有一个处理时间序列数
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • turtle.Screen().screensize() 未输出正确的屏幕尺寸[重复]

    这个问题在这里已经有答案了 我编写了一些代码来在屏幕周围随机放置点 但是 它并没有覆盖整个屏幕 import turtle import random t turtle Turtle color red green blue pink ye
  • javascript获取网页中选定文本的段落

    突出显示文本后 我想获取所选文本所在的段落 var select window content document getSelection 请问有什么指点吗 这实际上很难做到 因为你必须考虑六种情况 所选内容不在一个段落内 简单 整个选择都
  • python 脚本中 os.system 的 256 和 512 响应代码是什么

    当我在 python 中使用 os system ping 服务器时 我得到多个响应代码 使用的命令 os system ping q c 30 s SERVERANME 0 在线 256 离线 512 512 是什么意思 Per the
  • 下拉菜单导致滚动条

    我用过这个W3C 的示例 http www w3schools com bootstrap bootstrap dropdowns asp div class dropdown div
  • 如何在Python中求和

    我想知道如何在 python 中表示总和而不需要像这样的循环here http docs scipy org doc scipy reference tutorial optimize html 我们有 def rosen x The Ro
  • Flask 中的 import 和 extends 有什么区别?

    我正在阅读 Flask Web 开发 在例4 3中 extends base html import bootstrap wtf html as wtf 我想知道 extends 和 import 有什么区别 我认为它们在用法上很相似 在什
  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • 将压缩的json数据存储在本地存储中

    我想将 JSON 数据存储在本地存储中 有时存储的数据可能超过 5MB 每个域的浏览器允许的最大阈值 无论如何 我可以压缩或压缩数据并将其存储在本地存储中吗 如果对大数据进行每个 JS 函数的压缩和解压 会增加多少延迟 我正在使用这个 js
  • 在python中安装scipy模块时出错

    我正在尝试使用 pip 在 python 中安装 scipy 模块 它显示以下错误 Command c users sony appdata local programs python python35 32 python exe u c
  • Qcut Pandas:ValueError:Bin 边缘必须是唯一的

    我使用 Pandas 中的 Qcut 将数据离散化为大小相等的存储桶 我想要有价格桶 这是我的数据框 productId sell prix categ popularity 11997 16758760 0 28 75 50 524137
  • 禁用 iframe 中的滚动

    有没有办法在 iframe 中禁用所有滚动 我有一个 iframe 其中内容超出了 iframe 尺寸 设置scrolling no 只会删除滚动条 但不会禁用滚动 我无法控制 iframe html 的头部 所以我无法设计它的样式 有任何
  • 使用 statsmodels.formula.api 中的 ols - 如何删除常数项?

    我正在遵循第一个例子statsmodels教程 http statsmodels sourceforge net devel http statsmodels sourceforge net devel 如何指定在 ols 中不使用常数项进
  • Scrapy 抓取并跟踪 href 中的链接

    我对 scrapy 很陌生 我需要从 url 的主页跟踪 href 到多个深度 再次在 href 链接内我有多个 href 我需要遵循这些href 直到到达我想要抓取的页面 我的页面的示例 html 是 初始页 div class page
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • 如何配置 Eclipse 在使用 Pydev 插件选择“运行”或“调试”时启动浏览器

    我正在使用 Eclipse Pydev 插件学习 Python 和 Django 当我按 运行 或 调试 时 我希望内部或外部浏览器使用 URL http 127 0 0 1 启动或刷新 我见过用 PHP 插件完成的 但没有用 Pydev
  • 在至少 7 天内连续三天登录该产品的用户

    我有一个用于用户参与的数据框 df 如下所示 time stamp user id 2013 01 01 10 05 23 1 2013 01 03 16 35 23 1 2013 01 06 11 06 35 1 2013 01 10 1
  • CSS交付优化:如何推迟CSS加载?

    我在尝试着优化 CSS 交付遵循针对开发人员的谷歌文档https developers google com speed docs insights OptimizeCSSDelivery example https developers

随机推荐

  • 计算给定速度的轨道截距。

    背景 尝试编写一款 FTL 旅行不受重力影响并且加速度是即时的游戏 给定行星的开普勒轨道和飞船的当前位置及其最大超光速 FTL 速度 如何计算行星的位置 单位 米 秒 我可以获取给定日期时间的行星位置 但我正在努力弄清楚如何计算行星的位置以
  • 在“公共”文件夹中使用索引进行 URL 重写

    我是开发领域的新人 我拼命地想获得好的网址 我检查了该网站是否有类似问题 但找不到我需要的东西 或者我做得不好 情况如下 我为一个站点设置了一个项目 该站点的 index php 文件位于名为 Public 的文件夹中 更清楚地说 这是我现
  • Java 支持哪个版本的 ZIP(1.6 - 或任何与此相关的版本)

    ZIP 格式有多个版本 http en wikipedia org wiki ZIP 28file format 29 Version history 目前还不清楚 Java 支持哪个版本 在源代码中ZipOutputStream它定义了一
  • Python 使用 re 在字符之间创建空格(方括号中的字符除外)

    我有一个数据框 d1 letters ABCDE NOT FGH CCGF NOT HI MPJ NOT L MNA NOT PLJKAJSHD df1 pd DataFrame d1 df1 letters 0 ABCDE NOT FGH
  • 声明中的数组长度可以是非常量吗?

    我对 C 中的数组声明有点困惑 我知道可以这样做 int a 20 Reserved space for 20 int array int b 32 431 10 42 Length in square brackets is auto c
  • Kivy:错误弱引用对象(在时钟函数中)不再存在

    所以这是我的错误代码 我认为这个错误中有一些困难 我查看了论坛但找不到 而且 我有错误在我的手机上 with kivy 启动器 python 3当我用 buildozer 构建时 但我的电脑上没有 ubuntu 18 0 4 和 Windo
  • 为什么我们不能将字符串值分配给二维字符数组?

    include
  • 将终端选项卡标题设置为 unix 中的提示名称

    可以说 提示如下 run scripts gt 如何设置终端选项卡标题与提示相同 即终端选项卡图块也应该是运行脚本 gt 因此 当提示发生变化时 终端标题应该动态更新 许多终端模拟器都能够理解特殊的转义 033 0 foo 007
  • `import` 和 `#include` 之间的区别? CP20

    我不明白为什么 I saw import std core here I can t import std I can t import std iostream I can include
  • linux C++ 套接字选择循环

    我在使用套接字时遇到了一些问题 当循环时 除了第一个循环之外 我没有接收到数据 每次都会超时 如果我关闭并重新打开每个循环的套接字 尽管我似乎正确获取了数据 有什么想法吗 不关闭循环的示例 int socketHandle socket A
  • 仅计算某一特定时区的时区偏移量

    我正在尝试为一位在德国在线教学的人构建一个应用程序 我想将这个人的日程存储在一系列约会开始时间中 例如 let schedule new Date currentDate T07 00 00Z new Date currentDate T0
  • 将关联表展平为多值列?

    我有一张表 其中仅包含产品 ID 和类别 ID 产品可以属于多个类别 如何将类别 ID 平铺到产品列中 因此我以以下内容结束我们 id name desc categories 1 test1 lorem 1 3 4 23 2 test2
  • C# 文件移动和覆盖[重复]

    这个问题在这里已经有答案了 我正在开发一个多线程应用程序 我的代码中有某处 File Delete sidetapedata File Move sidetapedata2 sidetapedata sidetapedata and sid
  • R hist 与 geom_hist 断点

    我在 R 中使用 geom hist 和直方图 具有相同的断点 但得到不同的图表 我进行了快速搜索 有谁知道定义中断是什么以及为什么它们会有所不同 这些产生两个不同的情节 set seed 25 data lt data frame Mos
  • 无法修改冻结的数组。(FrozenError)

    当我启动服务器时padrino start 出现这个错误 C Ruby27 x64 lib ruby gems 2 7 0 gems padrino core 0 15 1 lib padrino core application rb 3
  • 如果从 Block 调用的方法使用 self,我是否需要使用弱 self 指针?

    Using self 在块中会导致保留循环 因此我需要创建对weakSelf 我明白这一点 BUT 如果从我的块中我调用一个使用的方法self 这也会导致保留周期吗 例如 如果我重新加载UITableView从一个街区和我的一些UITabl
  • Python:从字符串中删除一个字符

    我想删除字符串中的第 5 个字符 所以我做了 删除线 5 并得到 类型错误 str 对象不支持项目删除 所以不 我想知道是否有不同的有效解决方案来解决这个问题 字符串在 Python 中是不可变的 因此您无法就地更改它们 当然 您可以将字符
  • 获取 int 或 str 形式的用户输入

    我对 python 很陌生 相信我 我一直在无休止地寻找解决方案 但我就是找不到 我有一个包含监控图列表的 csv 使用下面的代码 我已经能够显示 2dlist 并让用户根据列表索引输入一个数字来选择特定的绘图 共有 11 个 但是当提示用
  • 如何在VIM中用CTRL-]实现自己的标签跳转?

    If h is used in VIM it will automaticall follow links via CTRL opening new help topics and maintaining tag jumps list CT
  • 使用 beautifulsoup 解析 HTML 页面

    我开始使用 beautifulsoup 来解析 HTML 例如对于网站 http en wikipedia org wiki PLCB1 import sys sys setrecursionlimit 10000 import urlli