Beautiful Soup - 如何解析表的列并将它们插入到两个列表中

发布于 2024-12-06 03:25:25 字数 1230 浏览 0 评论 0原文

我正在尝试解析一个包含两列的表,并将每列中的文本插入到两个列表中。

我需要一些想法如何去做。

from BeautifulSoup import BeautifulSoup

s = """<table><tr><td valign="top" width="25%"><b>Text1</b><a href="#">Link1</a>:</b></td><td>AAAA<a href="#">BBBB</a></td></tr>
<tr><td valign="top" width="25%"><b>Text2:</b></td><td>CCCC<a href="#">DDDD</a></td></tr>
<tr><td valign="top" width="25%"><b><a href="#">Link2</a>:</b></td><td><a href="#">EEEE</a> FFFF</td></tr></table>
<tr><td valign="top" width="25%"><b>Text3 <br> Text4:</b></td><td><a href="#">EEEE</a> FFFF</td></tr></table>"""

a = BeautifulSoup(s)

b = a.findAll('td', text=True)

left = []
right = []

for i in b:
    print i

我得到的结果:

Text1
链接1

AAAA
BBBB

我需要什么:

left = ["Text1", "Link1"]
右 = [AAAA", "BBBB"]

I am trying to parse a table with two columns and insert the text from each column into two lists.

I need some ideas how to do it.

from BeautifulSoup import BeautifulSoup

s = """<table><tr><td valign="top" width="25%"><b>Text1</b><a href="#">Link1</a>:</b></td><td>AAAA<a href="#">BBBB</a></td></tr>
<tr><td valign="top" width="25%"><b>Text2:</b></td><td>CCCC<a href="#">DDDD</a></td></tr>
<tr><td valign="top" width="25%"><b><a href="#">Link2</a>:</b></td><td><a href="#">EEEE</a> FFFF</td></tr></table>
<tr><td valign="top" width="25%"><b>Text3 <br> Text4:</b></td><td><a href="#">EEEE</a> FFFF</td></tr></table>"""

a = BeautifulSoup(s)

b = a.findAll('td', text=True)

left = []
right = []

for i in b:
    print i

What I get:

Text1
Link1
:
AAAA
BBBB

What I need:

left = ["Text1", "Link1"]
right = [AAAA", "BBBB"]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痴意少年 2024-12-13 03:25:25

首先获取行,然后获取单元格:

left = []
right = []

for tr in a.findAll('tr'):
    l, r = tr.findAll('td')
    left.extend(l.findAll(text=True))
    right.extend(r.findAll(text=True))

我还没有测试过这个,但很确定它应该有效:)

编辑:已修复(希望如此)

Get the row first, and then get the cell:

left = []
right = []

for tr in a.findAll('tr'):
    l, r = tr.findAll('td')
    left.extend(l.findAll(text=True))
    right.extend(r.findAll(text=True))

I haven't tested this, but pretty sure it should work :)

EDIT: fixed (hopefully)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文