作者ptoyhawinf (沉睡的毛利小五郎)
看板Python
标题[问题] 爬虫表格的问题
时间Sat Aug 5 02:37:53 2017
各位前辈好
小弟最近试着爬一些设备端的网页,想取得设备目前运作状态
(snmp竟然没办法取得我想要的资讯)
试着用bs及pyquery来实作
但在table这卡关,希望有经验的前辈可以解惑一下
html如下
<table>
<thead>
<tr>
<th>
栏位1</th>
<th>
栏位2</th>
<th>栏位3</th>
<th>栏位4</th>
<th>栏位5</th>
<th>
栏位6</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2">
AB</td>
<th>a0</th>
<td class="bold green_border">a1<br></td>
<td class="grey">a2</td>
<td class="grey">a3</td>
<td rowspan="2">ab4</td>
</tr>
<tr>
<th>b0<br></th>
<td class="bold">b1</td>
<td class="grey">b2<br></td>
<td class="grey">b3</td>
</tr>
<tr>
<td rowspan="2">
CD</td>
<th>c0</th>
<td class="bold">c1</td>
<td class="grey">c2</td>
<td class="grey">c3</td>
<td rowspan="2">cd4</td>
</tr>
<tr>
<th>d0<br></th>
<td class="bold green_border">d1</td>
<td class="grey">d2</td>
<td class="grey">d3</td>
</tr>
</tbody>
</table>
大致上,是要取得class = green_border的值,但也要取得它前後的一些栏位
但因为有的td rowspan =2,所以不管是直接filter green_border,再往前後取得值
或是取得tr後,再find,好像都拿不到rowspan的值
比如我要找的值是d1(栏位3),但我要怎麽拿到CD(栏位1)或cd4(栏位6)的值呢?
麻烦有经验的前辈指导一下,谢谢你们了。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.240.179.61
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1501871876.A.220.html
2F:→ ptoyhawinf: 谢hoho8大的回应,但green_border的所在td会随着设 08/05 04:14
3F:→ ptoyhawinf: 备状况改变而改变。所以我需要select .green_border 08/05 04:14
4F:→ ptoyhawinf: 後,再抓前後对映的td[rowspan="2"]的值,应该不能用 08/05 04:14
5F:→ ptoyhawinf: 硬拆的? 08/05 04:14
6F:→ hoho8: 所以绿灯会在 a0~d3 这4x4空间中亮起一个 08/05 06:15
8F:→ hoho8: 亮b2,就取b2 AB ab4......亮c1就取 c1 CD cb4,这样? 08/05 06:16
9F:→ hoho8: cb4 →cd4 08/05 06:17
11F:→ ntumath: 这取决於表格的相对位置,顺便附上code,可以看你怎麽改 08/05 07:27
13F:→ s860134: xpath 可以用 .. 取得上一层,这是你要的吗? 08/05 18:19
14F:→ ptoyhawinf: 谢谢ntumath的指导,原来是要用previous_siblings解决 08/06 02:50