今天在测试爬表格, 忽然发现有些表格中有嵌套表格的形式。。。。 没使用 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>
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' |