我正在嘗試使用Selenium/Python來讀取基本的HTML表格。每一行被格式化這樣的:解析Selenium中的表格
<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
我現在想遍歷兄弟元素以拉取行中的其他信息(例如「MPEG-4」,「16」,「66」,「142 In」,「New」)。這將是最簡單的,如果我可以移動到像下面的兄弟姐妹:
channel_elem = elem.nextsibling()
......但這個功能似乎並不存在。我也試着尋找其他的兄弟姐妹直接使用「以下同胞」:
for channel_elem in driver.find_elements_by_xpath('//td//a[contains(@href,"%s")]/../../following-sibling::td' % text):
# Read 2nd sibling (Channel)
但沒有找到任何元素,並還感覺就像一個迂迴的解決方案。
在此先感謝您的幫助。
我不知道Selenium是否有這種能力。我會嘗試使用BeautifulSoup,因爲IIRC,你可以找到它的兄弟姐妹 – Mangohero1
[BeautifulSoup兄弟姐妹](https://www.crummy.com/software/BeautifulSoup/bs4/doc/#next-sibling-and-previous-兄弟) – Mangohero1
我不確定xpath如何在你的html中處理'font'元素,但是你是否檢查過'//td//a[contains(@href,"%s")]/../ ../following-sibling :: td'路徑?它看起來像是有一個額外的後臺。試試'//td//a[contains(@href,"%s")]/../following-sibling::td'而不是 –