0
HTMLから日付とテキストを抽出しようとしています。私はこれを行うためにgoqueryを使用しています。selector.Find()の範囲を選択した要素に限定してください。
<body>
<div class="wrap">
<div class="cont">
<div class="cont_block">
<p class="date">
<font>
<font>Saturday, Apr 16,2016</font>
</font>
</p>
<div class="block_table">
<table class="left" width="auto" height="auto" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="left_top2"></td>
<td width="auto" class="bg_color2" height="12"></td>
<td class="right_top2"></td>
</tr>
<tr>
<td height="auto" class="right_mid2"></td>
<td class="bg_color2">
<font>
<font>Loerem ipsum dolor sit amet</font>
</font>
</td>
<td class="bg_color2" width="14"></td>
</tr>
<tr>
<td class="left_bottom2"></td>
<td class="bg_color2"></td>
<td class="right_bottom2"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_block">
<p class="date">Friday,Dec 18,2015</p>
<div class="block_table">
<table class="right" width="auto" height="auto" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="left_top3"></td>
<td width="auto" class="bg_color3" height="12"></td>
<td class="right_top3"></td>
</tr>
<tr>
<td height="auto" class="bg_color3" width="14"> </td>
<td class="bg_color3">Loerem ipsum dolor sit amet</td>
<td class="right_mid3"></td>
</tr>
<tr>
<td class="left_bottom3"></td>
<td class="bg_color3"></td>
<td class="right_bottom3"></td>
</tr>
</tbody>
</table>
</div>
<div class="block_table">
<table class="right" width="auto" height="auto" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="left_top3"></td>
<td width="auto" class="bg_color3" height="12"></td>
<td class="right_top3"></td>
</tr>
<tr>
<td height="auto" class="bg_color3" width="14"> </td>
<td class="bg_color3">Loerem ipsum dolor sit amet</td>
<td class="right_mid3"></td>
</tr>
<tr>
<td class="left_bottom3"></td>
<td class="bg_color3"></td>
<td class="right_bottom3"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
は、私には、例えばこれを行う多くの方法を試してみました:
doc.Find(".wrap .cont .cont_block").Each(func(i int, s *goquery.Selection) {
fmt.Println(s.Find(".date").Text())
s.Find(".block_table td").Each(func(j int, c *goquery.Selection){
if c.Text() != "" {
fmt.Println(c.Text())
}
})
})
問題は、日付と外にあるテキストの戻り結果を見つけるによって返される結果.cont_blockの範囲の基本的には、各繰り返しで現在選択されている.cont_blockの下にあるすべての日付とtdをドキュメントから返します。
私には何が欠けていますか?
私はあなたの問題を理解していません。私はあなたのコードを実行し、それはあなたが求めるものをやっているように見えます。あなたが得るものの例と、それがあなたが期待しているものとどのように異なるのかを教えてください。 – Zoyd
あなたはかなり正しいです。私が処理しているhtmlファイルはかなり大きく、有効ではないことが判明しています。彼らは問題を引き起こしている閉鎖されていない要素を持っています。 –