当前位置: 首页 > 面试题库 >

BeautifulSoup,HTML表中的字典

董子平
2023-03-14
问题内容

我正在尝试从网站上抓取表格数据。

这是一个简单的示例表:

t = '<html><table>' +\
    '<tr><td class="label"> a </td> <td> 1 </td></tr>' +\
    '<tr><td class="label"> b </td> <td> 2 </td></tr>' +\
    '<tr><td class="label"> c </td> <td> 3 </td></tr>' +\
    '<tr><td class="label"> d </td> <td> 4 </td></tr>' +\
    '</table></html>'

所需的解析结果是 {' a ': ' 1 ', ' b ': ' 2 ', ' c ': ' 3 ', ' d ' : ' 4' }

到目前为止,这是我最接近的尝试:

for tr in s.findAll('tr'):
  k, v = BeautifulSoup(str(tr)).findAll('td')
  d[str(k)] = str(v)

结果是:

{'<td class="label"> a </td>': '<td> 1 </td>', '<td class="label"> d </td>': '<td> 4 </td>', '<td class="label"> b </td>': '<td> 2 </td>', '<td class="label"> c </td>': '<td> 3 </td>'}

我知道的text=True参数,findAll()但是使用它时没有得到预期的结果。

我正在使用python 2.6和BeautifulSoup3。


问题答案:

尝试这个:

from BeautifulSoup import BeautifulSoup, Comment

t = '<html><table>' +\
    '<tr><td class="label"> a </td> <td> 1 </td></tr>' +\
    '<tr><td class="label"> b </td> <td> 2 </td></tr>' +\
    '<tr><td class="label"> c </td> <td> 3 </td></tr>' +\
    '<tr><td class="label"> d </td> <td> 4 </td></tr>' +\
    '</table></html>'

bs = BeautifulSoup(t)

results = {}
for row in bs.findAll('tr'):
    aux = row.findAll('td')
    results[aux[0].string] = aux[1].string

print results


 类似资料:
  • 问题内容: 我正在使用BeautifulSoup在特定页面上寻找用户输入的字符串。例如,我想查看字符串“ Python”是否位于页面上:http : //python.org 当我使用时: find_string返回 但是当我使用: find_string返回预期 这两个语句之间有什么区别,使得当要搜索的单词实例不止一个时,第二条语句可以工作 问题答案: 以下行正在寻找 确切的 Navigable

  • 问题内容: 我想获取HTML中隐藏的输入字段的值。 我想用Python编写一个正则表达式,该表达式将返回的值,因为我知道HTML中的行遵循以下格式 有人可以提供Python范例来解析HTML值吗? 问题答案: 对于这种特殊情况,BeautifulSoup比正则表达式更难编写,但是它更健壮…我只是为BeautifulSoup示例提供帮助,因为您已经知道要使用哪个正则表达式:-)

  • 问题内容: 有没有一种方法可以从HTML文件中获取CSS类?示例片段: 完美的输出将是: 尽管这样可以: 问题答案: BeautifulSoup本身根本不解析CSS样式声明,但是您 可以 提取这些部分,然后使用专用的CSS解析器对其进行解析。 根据您的需求,有多个CSS解析器可用于python。我会选择cssutils(需要python 2.5或更高版本(包括python 3)),它在支持方面是最

  • 问题内容: 我需要能够修改HTML文档中的每个链接。我知道我需要使用,但是我对实现该方法不是100%肯定的。如果有人可以引导我获得良好的资源或提供代码示例,将不胜感激。 谢谢。 问题答案: 也许这样的事情行得通吗?(不幸的是,我面前没有Python解释器)

  • 问题内容: 我正在尝试学习一些漂亮的汤,并从一些iFrame中获取一些html数据-但到目前为止,我还没有取得很大的成功。 因此,解析iFrame本身似乎不是BS4的问题,但是我似乎并没有从中获得嵌入的内容-不管我做什么。 例如,考虑下面的iFrame(这是我在chrome开发人员工具上看到的): 我要提取的内容在哪里。 但是,当我使用以下BS4代码时: 我得到: 换句话说,我得到的iFrame中

  • 问题内容: 我正在编写一个脚本,用于抓取国际StarCraft 2游戏的Team Liquid数据库的游戏。(http://www.teamliquid.net/tlpd/sc2-international/games) 但是我来提出一个问题。我的脚本遍历所有页面,但是Team Liquid网站使用了我认为在表中的某种AJAX来更新它。现在,当我使用BeautifulSoup时,我无法获得正确的数