2017-11-12 14 views
0

私はこのようなウェブサイトからデータを削り取ろうとしています。これは、単一のTD内の情報の4行を持って、私は私が最終的な結果は、JSONファイルに次のようになりたいスクレイピングの助けが必要になります。これまでのところ、私はきたJavaScript:文字間でプッシュ文字列を処理する方法は?

<div class="contentpage"> 
    <table> 
    <thead></thead> 
    <tbody> 
     <tr>Main Title</tr> 
     <tr> 
     <td> 
      <strong>Sub Title here</strong> 
      <br> 
      "Address Part One" 
      <br> 
      "Address Part Two" 
      <br> 
      "666666" 
      <br> 
      "Tel No: 12345678" 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</div> 

{ 
"mainTitle" : "Main Title" 
"subTitle" : "Sub Title here" 
"address1" : "Address Part One" 
"address2" : "Address Part Two" 
"postalCode" : "666666" 
"telNo" : "12345678" 
} 

HTML 、私のJavaScriptをメインタイトルとサブタイトルをスクラップすることができたのみ:

function parseInfo ($) { 
    const result = {} 
    const enterRow = $('.contentpage > table').first().find('tr) 

    result.mainTitle = enterRow.eq(0).find('td').text().trim() 
    result.subTitle = enterRow.eq(1).find('td > strong').text().trim() 

    return result 
} 
+0

のようなJSONはあなたがつかむしたい各要素にIDを追加することができ、そのIDによって要素を呼び出し、そのinnerHTMLのをつかみます。例をご希望の場合はお知らせください。 – Airwavezx

+0

私が掻き取ろうとしているHTMLは私のものではなく、公開されたウェブサイトです。それは文字通り私が上で書いたような方法でフォーマットされています。 – LegoCamel

+0

おそらく、字幕を含む 'td'全体(' strong'だけでなく)をつかんで、残りの情報を取り出すための文字列操作を行うべきでしょう。 – Airwavezx

答えて

1

あなたは改行文字でテキストを分割することにより、これらの値を得ることができます。

function parseInfo() { 
    const result = {}; 
    const enterRow = $('.contentpage > table').first().find('tr'); 
    result.mainTitle = enterRow.eq(0).text().trim(); 
    result.subTitle = enterRow.eq(1).find('td > strong').text().trim(); 
    let elements = enterRow.eq(1).find('td').text().trim().split('\n'); 
    let filteredElements = elements.filter(val => val.replace(/\s/g, '').length).map(val => val.trim()); 
    result.addressOne = filteredElements[1]; 
    result.addressTwo = filteredElements[2]; 
    result.addressCode = filteredElements[3]; 
    result.telNumber = filteredElements[4]; 
    return result; 
} 

マイフィドル:https://jsfiddle.net/01zmmgy5/1/

0

この

var row_items = enterRow.split("<br>") 

ようresoultが配列である、TDを分割するようにしてください。 その後、サイクル内の行アイテムを消去し、強い二重引用符を削除するだけです。

for (var i = 0; i < row_items.length; i++) { 
    row_items[i] = row_items[i].replace("<strong>", "").replace("</strong>", "").replace(/"/g, "") 
} 

そして最後に、あなたが

result = {} 
result["mainTitle"] = row_items[0] 
result["subTitle"] = row_items[1] 
... 
関連する問題