我试图在此HTML中提取两个关键词商品详细和支払详细的文字
<TR>
<TD BGCOLOR=#336600><BR></TD>
<TD COLSPAN=3 BGCOLOR=#FFFFCC><FONT COLOR=#336600 SIZE=4><B> 商品詳細 </B></FONT></TD>
</TR>
<TR>
<TD COLSPAN=4 HEIGHT=10>
<LI STYLE=><SPAN STYLE=>鍵付きで盗難を防止できます。</SPAN>
<LI STYLE=><SPAN STYLE=>商品サイズ:約28*36*12cm</SPAN>
<LI STYLE=><SPAN STYLE=>素材:鉄製</SPAN>
<LI STYLE=><SPAN STYLE=>※柄は、ランダムにて発送なります</SPAN>
<LI STYLE=><SPAN STYLE=></SPAN>
<LI STYLE=>
<SPAN STYLE=></SPAN>
</TD>
</TR>
<TR>
<TD><BR></TD>
<TD COLSPAN=2 ALIGN=left><BR></TD>
<TD><BR></TD>
</TR>
<TR>
<TD COLSPAN=4 HEIGHT=25><BR></TD>
</TR>
<TR>
<TD BGCOLOR=#336600><BR></TD>
<TD COLSPAN=3 BGCOLOR=#FFFFCC>
<FONT COLOR=#336600 SIZE=4><B> 支払詳細 </B></FONT>
</TD>
</TR>
我尝试了这两个链接中的解决方案,但它们对我不起作用
Scrapy xpath between 2 keywords
Xpath text extraction between 2 keywords
这是我在scrapy shell中运行时的结果:
In [21]: response.xpath("//text()[preceding-sibling::*[text()='商品詳細'] and following-sibling::*[text()='支払詳細']]").extract()
Out[21]: []
答案 0 :(得分:0)
使用xpath,您可以向任何方向导航文档,因此在这种情况下,您希望找到一个关键节点,您知道一些关于该节点的信息并导航到相关节点。
//td[contains(.//text(),'商品詳')] # find td that contains some text
/../following-sibling::tr//li/span/text()" # find text in it's father's sibling
我在shell中尝试过这个:
>[1]: sel.xpath("//td[contains(.//text(),'商品詳')]/../following-sibling::tr//li/span/text()").ex
tract()
<[1]: ['鍵付きで盗難を防止できます。', '商品サイズ:約28*36*12cm', '素材:鉄製', '※柄は、ランダムにて発送なります']