2017-04-25 4 views
0

Ich versuche, Text zwischen zwei Schlüsselwörter zu extrahieren 商品 詳細 und 支 払 詳細 in diesem HTMLXPATH (Scrapy): Wählen Sie Text zwischen zwei bestimmten Keywords

 <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> 

ich die Lösungen in diesen zwei Links versucht, aber sie didn ‚t Arbeit für mich

Scrapy xpath between 2 keywords

Xpath text extraction between 2 keywords

Dies ist das Ergebnis, das ich habe, wenn in scrapy Shell ausgeführt:

In [21]: response.xpath("//text()[preceding-sibling::*[text()='商品詳細'] and following-sibling::*[text()='支払詳細']]").extract() 
Out[21]: [] 

Antwort

0

Mit Xpath können Sie das Dokument in jede Richtung navigieren. In diesem Fall möchten Sie einen Schlüsselknoten finden, über den Sie Informationen zu benachbarten Knoten erhalten.

//td[contains(.//text(),'商品詳')] # find td that contains some text 
/../following-sibling::tr//li/span/text()" # find text in it's father's sibling 

Ich habe schon versucht, diese in einer Schale:

>[1]: sel.xpath("//td[contains(.//text(),'商品詳')]/../following-sibling::tr//li/span/text()").ex 
     tract() 
<[1]: ['鍵付きで盗難を防止できます。', '商品サイズ:約28*36*12cm', '素材:鉄製', '※柄は、ランダムにて発送なります']