我正在尝试使用Selenium / Python来读取基本的HTML表。每行格式如下:
<tr>
<td bgcolor="#ffffbb"><font face="Arial"><font size=2><b><a href="https://www.lyngsat.com/tvchannels/id/TV-Polri.html">TV Polri</a></b></td>
<td bgcolor="#ffffbb"><a href="https://www.lyngsat.com/freetv/Indonesia.html"><img src="/f.gif" title="LyngSat Free TV" height=15 width=15 align=absbottom border=1></a><br></td>
<td bgcolor="#ffffbb"><font face="Verdana"><font size=1>MPEG-4</td>
<td bgcolor="#ffffbb"><font face="Verdana" size=1><font color="darkgreen"> 16</font></td><td bgcolor="#ffffbb"><font face="Verdana" size=1> 66</td>
<td bgcolor="#ffffbb"><font face="Verdana" size=1> 142 In<br></td>
<td bgcolor="#d0ffff"><font face="Verdana" size=1>new</font></td>
</tr>
该表不包含要锁定的ID或类,因此我使用href的内容选择行(与电视频道相关):
text = "https:www.lyngsat.com/tvchannels/"
for elem in driver.find_elements_by_xpath('//a[contains(@href,"%s")]' % text):
print(elem.text) # Prints TV Polri, the name of the TV channel
我现在想要遍历兄弟元素来拉动行中的其他信息(例如&#34; MPEG-4&#34;,&#34; 16&#34;,&#34; 66&#34;,&#34; 142 In&#34;,&#34; New&#34;)。如果我可以通过以下方式移动到下一个兄弟,那将是最简单的:
channel_elem = elem.nextsibling()
...但这个功能似乎不存在。我也试过直接使用&#39;以下兄弟姐妹来找到其他兄弟姐妹:
for channel_elem in driver.find_elements_by_xpath('//td//a[contains(@href,"%s")]/../../following-sibling::td' % text):
# Read 2nd sibling (Channel)
但这并没有找到任何元素,也感觉像是一个迂回的解决方案。
提前感谢所有帮助。
答案 0 :(得分:-2)
如何选择行,然后从中找到列?
for row_elem in driver.find_elements_by_xpath('//a[contains(@href,"%s")]/../..' % text):
for col in row_elem.find_elements_by_xpath('./td'):
print(col.text)