2011-09-29 10 views
10

私はwepageからテーブルの内容を取得しようとしています。私は内容が必要だが、タグ<tr></tr>は必要ない。私はコンテンツだけの "tr"や "td"は必要ない。例えばのため:sedなどのhtmlタグを削除

<td> I want only this </td> 
<tr> and also this </tr> 
<TABLE> only texts/numbers in between tags and not the tags. </TABLE> 

も私はSEDをしようとした新しいCSVファイルでこのような最初の列出力 COLUMN1、INFO1、INFO2、情報3 coumn2、INFO1、INFO2、情報3

を入れたいです<tr><td>を削除しましたが、私がテーブルをフェッチするときには<color><span>などのような他のタグもありますので、すべてのタグを削除します。すべての短いとすべて<と>。

+1

コンテンツはどのくらいレギュラーですか? ['lynx'](http://lynx.browser.org/)を使ってページをつかみ、テキストに変換してプレーンテキストを解析することができます。より詳細な説明がなければ、画面スクレイピングはさまざまな醜いハッキングの選択肢となる傾向があります。 –

+0

これは最初の問題を解決しました** sed -e 's/<.*> // g'入力**上のコメントに私はページをwget'edし、テーブル部分だけを掻きました。ファイルにはクリーンなテーブルタグとデータのみが含まれています。試験時間表ルーチンのようなものです。 – user913492

答えて

17

sed 's/<[^>]\+>//g'は、すべてのタグを取り除くだろうが、あなたは隣接しているタグが一緒に実行されませんので、スペースでそれらを交換することをお勧めします:<td>one</td><td>two</td>はなってきて:onetwo。したがって、sed 's/<[^>]\+>/ /g'を実行して、one two(実際にはone two)という出力を出すことができます。

言い換えれば、生のテキストだけが必要なのでなければ、タグをはがした後にデータに何らかの変換を加えようとしているように聞こえるが、Perlのようなスクリプト言語はこれを行うためのより適切なツールかもしれない。

muがあまりにも短いと言えば、HTMLを掻き集めることはちょっと面倒かもしれません。実際にHTMLを解析するものを使用すると、これを実行する最良の方法になります。 PHPs DOM APIは、これらの種類のものにはかなり良いです。

+0

ありがとう..それは参考にされた.. – user913492

2

オリジナル:

Mac端末REGEXの動作が少し異なります。私は、次の例を使用して、私のMac上でこれを行うことができました:

$ curl google.com | sed 's/<[^>]*>//g' 
% Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 219 100 219 0  0 385  0 --:--:-- --:--:-- --:--:-- 385 

301 Moved 
301 Moved 
The document has moved 
here. 

$ bash --version 
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14) 
Copyright (C) 2007 Free Software Foundation, Inc. 

編集:だけ明確にするためにorigionalは、ように見えた

:また

$ curl googl.com 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<TITLE>301 Moved</TITLE></HEAD><BODY> 
<H1>301 Moved</H1> 
The document has moved 
<A HREF="http://www.google.com/">here</A>. 
</BODY></HTML> 

迷惑なカールヘッダが可能-sオプションを使用しない:

$ curl -s google.com | sed 's/<[^>]*>//g' 

301 Moved 
301 Moved 
The document has moved 
here. 

$