2016-09-01 50 views
0

我試圖刮掉一張看起來像下面的表格。如何將表格轉換爲scrapy的單個文本塊

<table class="table"> 
    <caption>Caption</caption> 
    <tbody> 
     <tr> 
      <th scope="row">Title</th> 
      <td>Detail</td> 
     </tr> 
     <tr> 
      <th scope="row">Title 2</th> 
      <td>Detail 2</td> 
     </tr> 
    </tbody> 
</table> 

你將如何設置scrapy,使我的輸出文件生成類似於下面的輸出?

Title: Detail 
Title2: Detail2 

目前我可以用兩個CSS選擇器(一個用於TD的,一個是日的)得到的所有文字,但我希望能夠將這些!

可惜的行數,從頁面到頁面的不同..

回答

0

使用XPath:

tabledata={} 
for i in response.xpath("//table[@class='table']//tr") 
    tabledata[i.xpath("th/text()").extract_first()] = i.xpath("td/text()").extract_first() 

輸出

{"Title":"Detail", "Title 2":"Detail 2"} 
+0

感謝拉斐爾,對不起,沒有說清楚,但你知道如何我可以將這個數組變成類似[「標題:細節 - 標題2:細節2」]? 我可以使用以下方法來獲得[ 「標題」, 「詳細信息」, 「標題2」, 「Detail2」]: response.xpath(「//表[@類= '表'] //第/ text()| // table [@ class ='table'] // td/text()「)。extract() – John

+0

@Oli我更新了我的答案 –

相關問題