前提・実現したいこと
pythonでxpathを使用して、
下記HTMLのtd内の文字を<br>タグも含めて、まるごと取得(スクレイピング)したいです。
html
1<th>A<th> 2<td> 3 あいうえお<br> 4 かきくけこ<br> 5 さしすせそ<br> 6 たちつてと<br> 7</td>
該当のソースコード
python
1 for tr in exp.xpath('.//tr'): 2 key = tr.xpath('.//th[1]')[0].text.strip() 3 value = tr.xpath('.//td[1]')[0].text.strip() \ 4 if tr.xpath('.//td[1]')[0].text else '' 5 data[key] = value
発生している問題
上記ソースコードで実施したところ、
最初の「あいうえお」しか取得出来ませんでした。
試したこと
ソースコードの3行目をいろいろと変更して試してみました。
value = tr.xpath('string(.//td[1])').strip()
のときは、「あいうえおかきくけこさしすせそたちつてと」と文字はすべて取得できましたが、
<br>タグが含まれてませんでした。
下記で試してみましたが、すべてエラーとなってしまいました。
× value = tr.xpath('text(.//td[1])').strip()
× value = tr.xpath('.//td[1]/string()').strip()
× value = tr.xpath('.//td[1]').strip()
× value = tr.xpath('.//td[1]')[0].node.strip()
× value = tr.xpath('.//td[1]')[0].node().strip()
× value = lxml.html.tostring(tr.xpath('.//td[1]'))
× value = lxml.tostring(tr.xpath('.//td[1]'))
<br>タグも含めて、td内の文字を取得する方法がわかる方がいらっしゃいましたら、
ぜひご教示いただけないでしょうか。何卒よろしくお願い致します。