python - 美汤,html表格解析

标签 python beautifulsoup html-table html-parsing

我目前在尝试将表格解析为数组时遇到一些问题。

我有一个简单的表格 ( HERE ),我需要使用 BS4 对其进行解析并将单元格内容放入一个数组中。让事情变得困难的是单元格不包含文本,而是包含具有这些标题的图像: “确认”或“站点”——这只是用户权利的东西。 [我正在跳过包含复选框的第一行,那些我可以毫无问题地提取]

如果你看上面的 fiddle ,我需要做的就是以这样的方式解析它,使得结果数组变成:

Array1[0] = User1,Confirm,Confirm,Site,Confirm
Array1[1] = User2,Confirm,Confirm,Confirm,Confirm
Array1[2] = User3,Confirm,Confirm,Confirm,Confirm
Array1[3] = User4,Confirm,Site,Site,Confirm

然后我可以随心所欲地做。 另一个复杂问题是,有时行数会有所不同,因此脚本应该能够适应这种情况并从表中递归创建数组。

目前 StackOverflow 是我唯一的希望。在过去的 10 个小时里,我自己做了这件事,但几乎没有成功,坦率地说,我已经失去了希望。最近我得到的东西是提取封闭的标签,但由于一些奇怪的原因无法进一步解析,也许是 bs4 的嵌套限制?任何人都可以看看,看看他们是否能找到这样做的方法?或者至少解释一下如何到达那里?

变量解释: rightml - 餐 table 上的汤。

allusers = []
rows = rightml.findAll('tr')
for tr in rows:
    cols = tr.findAll('td')
    for td in cols:
        if (td.find(title="Group")) or (td.find(title="User")):
            text = ''.join(td.text.strip())
            allusers.append(text)
print allusers

gifrights = []

rows7 = rightml.findAll('td')
#print rows7
for tr7 in rows:
    cols7 = tr7.findAll('img')
    for td7 in cols7:
        if (td7.find(title="Confirm")) or (td7.find(title="Site")):
            text = ''.join(td7.text.strip())
            text2 = text.split(' ')
            print text2
            gifrights.append(text2)

我可能无法使用此代码..但我已经在大学尝试过它了。

最佳答案

这样的事情会有效吗:

rows = soup.find('tbody').findAll('tr')

for row in rows:
    cells = row.findAll('td')

    output = []

    for i, cell in enumerate(cells):
        if i == 0:
            output.append(cell.text.strip())
        elif cell.find('img'):
            output.append(cell.find('img')['title'])
        elif cell.find('input'):
            output.append(cell.find('input')['value'])
    print output

输出如下:

[u'Logged-in users', u'True', u'True', u'True', u'True']
[u'User 1', u'Confirm', u'Confirm', u'Site', u'Confirm']
[u'User 2', u'Confirm', u'Confirm', u'Confirm', u'Confirm']
[u'User 3', u'Confirm', u'Confirm', u'Confirm', u'Confirm']
[u'User 4', u'Confirm', u'Site', u'Site', u'Confirm']

关于python - 美汤,html表格解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901066/

相关文章:

python - Tkinter:鼠标拖动一个没有边框的窗口,例如。覆盖直接(1)

python - 如何旋转柱形图上的 data_label 值

python - 如何修复发送发布请求时的 <Response [404]> 错误

javascript - knockout : Table Paging

php - 如何在自动创建的 html/PHP 表中回显 SQL 表数据

python - LPTHW Ex47 属性错误

python - 如何阻止URL被注释掉(C)

python - 使用 BeautifulSoup 提取特定的 TD 表格元素文本?

python - 身份验证网页抓取问题

html - 居中文本,两边有类似 hr 的线,不使用表格