【发布时间】:2012-01-26 11:51:27
【问题描述】:
免责声明:scrapy 新手。
我有一个非常不规则行的表格,基本结构是:
<tr>
<td> some text </td>
<td> some other text </td>
<td> yet some text </td>
</tr>
但偶尔(几百次)有些行是
<tr>
<td> <p> some text <p> </td>
<td> <div class="class-whateva"> <p> some other text </p></div> </td>
<td> <span id="strange-id">
<a href="somelink"> yet some text </a>
<span> </td>
</tr>
或 1 或 2 个嵌套的“p”“div”和“span”的其他排列,带或不带返回行字符。
我已经使用以下形式的条件语句处理了嵌套的“span span”或“p div”或“div span”:
for row in allrows:
if row.select('td[2]/text()'):
item['seconditem']=row.select('td[2]/text()').extract()
elif row.select('td[2]/*/text()'):
item['seconditem']=row.select('td[2]/*/text()').extract()
elif row.select('td[2]/*/*/text()'):
item['seconditem']=row.select('td[2]/*/*/text()').extract()
现在我有两个问题:
(1) 是有条件的
td[2]/*/*/text()
不规则嵌套行的正确方法?
(2) 我仍然错过了标记前有返回(或换行符)的所有情况。 因此,如果该行是以下形式:
<td><div>
<p>text </p>
</div></td>
我所有的 xpath 将返回一个 ['\n ']。有什么技巧可以捕捉换行符之后的内容?
感谢任何提示。谢谢。
【问题讨论】:
标签: python xpath html-parsing scrapy