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の内容を使用して(TVチャネルに関連する)の行を選択している:
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)
が、これは任意の要素を見つけ、また、ロータリー・ソリューションのように感じていません。
ご協力いただきありがとうございます。
私はセレンがその能力を持っているかはわかりません。私はあなたがそれで兄弟を見つけることができ、IIRC、以来BeautifulSoupを使って試してみた – Mangohero1
[BeautifulSoupで兄弟](https://www.crummy.com/software/BeautifulSoup/bs4/doc/#next-sibling-and-previous-兄弟) – Mangohero1
私はXPathがあなたのhtmlにその「フォント」要素をどのように処理するかわからないんだけど、あなたは「//td//a[contains(@href,"%s")]/../ことを確認してい.. /次の兄弟:: tdのパス?余分なバックステップがあるようです。代わりに –