• ベストアンサー

RSS非対応サイトから情報収集

RSS非対応サイトのURLを登録するとHTMLのアンカーが張られている箇所だけ収集して、RSS(XML)に変換しているサイトがありました。 どういう仕組みになっているのか知りたいのです。 URLからHTMLファイルをDLして、http://で始まるパスをマッチングさせて抽出しているのでしょうか。 その場合、PHPとjavascriptを使ってそういうことを作ることは可能なのでしょうか。 似たようなシステムを作られた方がいらっしゃったら 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • rioriost
  • ベストアンサー率100% (4/4)
回答No.2

以前にexpatで試したときには実用的な速度にならなかったため断念しました。某大手サイトのエンジニアの知り合いもPerlの正規表現でやっていると言ってましたし。 1項目の「見出し」と「リンク」だけを抜き出せば良いので、実際にパースする必要があるのはhtml全体の一部分であることが多いですね。例えば、<a href=" ([^"]+)"[^>]*>([^<]+)</a>?(([0-9]{4})/([0-9]{2}/([0-9]{2}))?)でリンクと見出しと日付が拾えますが、これを各サイトのhtmlに合わせていく必要があります。phpの場合、eregとpregがありますが、eregはpregの10倍ぐらい遅いので、pregで。

gincyoko
質問者

お礼

ご丁寧にありがとうございます。 さっそく、教えていただいた内容で やってみようと思います。

その他の回答 (1)

  • rioriost
  • ベストアンサー率100% (4/4)
回答No.1

phpを使って正規表現でhtmlをパースしてます。RSSには変換していませんが、DBに格納しているのでRSSにしようと思えばすぐ出来ますね。

参考URL:
http://rio.st/news_index.php
gincyoko
質問者

補足

何度もすみません。的外れな質問かもしれないのですが、RSSの場合、PHPだとXMLパーサという関数を使ってXMLを解読?読み込んでいると思うのですが、この場合、XMLパーサでHTML文書をパースできるようにすればいいのでしょうか。 具体的にはexpatをHTML対応化にするためエレメントの終了タグの省略を許せばいいのでしょうか。 私の未熟なスキルでの質問なので、意味不明な部分はご指摘下さい。

関連するQ&A