请问 BeautifulSoup 在处理处理嵌套表格的问题。。。

2018-08-16 20:36:36 +08:00
 pppguest3962

今天在测试爬表格, 忽然发现有些表格中有嵌套表格的形式。。。。 没使用 xpath,主要是因为路径节点的名称会变化,而不是永久固定的,不好把握,但表格就一直相对固定的。。。

是这样的,我已经取得目标区域表格的代码, 目标区域表格嵌套的,表格中有表格?(有 td 标签)

#执行
targettable = soup.select('tr > td')

print (targettable[0])
#targettable 有好多个(行),先把第一行的表格处理吧,

输出:

<td class="pagket">
<a class="ah" href="javascript:void(0);" id="p_109746"><code style="display:none">物件</code><i>77239</i></a>
</td>

<td class="pagketname" title="model16">
<a href="http://10.11.12.1/gooddata/1733356.html" target="_blank"><span class="2016"><s></s>蔡杰</span></a>
</td>

<td class="width">
<span id="w_19281" title="宽度">349</span>
<span style="display:none" title="录入时间:2016-03-11 12:30">12:30</span>
<span style="display:none" title="审核时间:2016-03-11 14:21">14:21</span>
</td>

<td class="weight">
<span id="wt_19281" title="重量">349</span>
</td>

<td class="conductor">
<em class="pm ">处理人
<i title="物件处理人">陈才华</i>
</em>
<a href="http://10.11.12.1/staff/41.html" target="_blank" title="联系人">陈才华</a>
</td>

第一个问题:在输出的第一行,是'td class'这种标签属性,应该如何从 targettable[0]中获取其内容? 我这样做是不行的,望请高手指点迷津...

print(targettable[0].find('td').attrs['class']))
print(targettable[0].find('td').attrs['td class']))

也试过这样:

for tr in soup.select('tr > td'):
targettr = BeautifulSoup(tr.text, "lxml")
#然后想对 targettr 做些什么,好像这条路做不通?

第二个问题:

<td class="pagketname" title="model16">

读出 title 内容?

第三个问题:在 targettable[0]这个里面的标签里面,有两个内容,这种再嵌套的内容,如何读出来?

<span style="display:none" title="录入时间:2016-03-11 12:30">12:30</span>
<span style="display:none" title="审核时间:2016-03-11 14:21">14:21</span>
1897 次点击
所在节点    Python
1 条回复
bmos
2018-08-17 11:57:44 +08:00
我自己试了一下。
text = """上述输出"""
soup = BeautifulSoup(text,"lxml")

soup.find("td").attrs['class']#这个做法应该和你的一样
Out[157]: ['pagket']

soup.find("td",{"class","pagketname"}).attrs['title']#和第一个问题一样吧
Out[159]: 'model16'

a = soup.find_all("span",{"style":"display:none"})#第三个问题

a[0].attrs['title']
Out[161]: '录入时间:2016-03-11 12:30'

a[0].get_text()
Out[162]: '12:30'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/480514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX