ウェブサイトのrssフィードURLをプログラムで見つける必要があります。 rules for making RSS discoverableはかなりよく文書化されているphpを使ってウェブサイトのRSSフィードURLを取得するには?
4
A
答えて
3
これは、ここにコードを貼り付けるよりもはるかに複雑です。しかし、私はあなたがする必要があることについて正しい方向にあなたを指すことができます。
- まず、あなたが戻ってRSS Autodiscovery Meta tag探します文字列を解析ページ
- を取得する必要があります。ドキュメント全体をXMLとしてマップしたり、DOMのトラバーサルを使用することもできますが、正規表現を使用するだけです。
- タグのhref部分を抽出すると、RSSフィードのURLを取得できます。
1
[PHPまたはjqueryのいずれかを使用して]
。あなたは、HTMLを解析し、記述された要素を探す必要があります。
13
一般的なプロセスが既に回答されている
(Quentin、DOOManiac)ので、いくつかのコード(Demo):
<?php
$location = 'http://hakre.wordpress.com/';
$html = file_get_contents($location);
echo getRSSLocation($html, $location); # http://hakre.wordpress.com/feed/
/**
* @link http://keithdevens.com/weblog/archive/2002/Jun/03/RSSAuto-DiscoveryPHP
*/
function getRSSLocation($html, $location){
if(!$html or !$location){
return false;
}else{
#search through the HTML, save all <link> tags
# and store each link's attributes in an associative array
preg_match_all('/<link\s+(.*?)\s*\/?>/si', $html, $matches);
$links = $matches[1];
$final_links = array();
$link_count = count($links);
for($n=0; $n<$link_count; $n++){
$attributes = preg_split('/\s+/s', $links[$n]);
foreach($attributes as $attribute){
$att = preg_split('/\s*=\s*/s', $attribute, 2);
if(isset($att[1])){
$att[1] = preg_replace('/([\'"]?)(.*)\1/', '$2', $att[1]);
$final_link[strtolower($att[0])] = $att[1];
}
}
$final_links[$n] = $final_link;
}
#now figure out which one points to the RSS file
for($n=0; $n<$link_count; $n++){
if(strtolower($final_links[$n]['rel']) == 'alternate'){
if(strtolower($final_links[$n]['type']) == 'application/rss+xml'){
$href = $final_links[$n]['href'];
}
if(!$href and strtolower($final_links[$n]['type']) == 'text/xml'){
#kludge to make the first version of this still work
$href = $final_links[$n]['href'];
}
if($href){
if(strstr($href, "http://") !== false){ #if it's absolute
$full_url = $href;
}else{ #otherwise, 'absolutize' it
$url_parts = parse_url($location);
#only made it work for http:// links. Any problem with this?
$full_url = "http://$url_parts[host]";
if(isset($url_parts['port'])){
$full_url .= ":$url_parts[port]";
}
if($href{0} != '/'){ #it's a relative link on the domain
$full_url .= dirname($url_parts['path']);
if(substr($full_url, -1) != '/'){
#if the last character isn't a '/', add it
$full_url .= '/';
}
}
$full_url .= $href;
}
return $full_url;
}
}
}
return false;
}
}
+0
優秀!それは私のために非常にうまく動作します – fortytwo
1
rssでもatomでも、最初の利用可能なフィードを取得する機能はわずかです(ほとんどのブログには2つのオプションがあります - これは最初の設定を取得します)。
public function getFeedUrl($url){
if(@file_get_contents($url)){
preg_match_all('/<link\srel\=\"alternate\"\stype\=\"application\/(?:rss|atom)\+xml\"\stitle\=\".*href\=\"(.*)\"\s\/\>/', file_get_contents($url), $matches);
return $matches[1][0];
}
return false;
}
関連する問題
- 1. RSSフィードから画像URLを取得するにはアンドロイド
- 2. PHP - RSSフィードから画像URLを取得
- 3. 複数のウェブサイトからRSSフィードを取得する方法
- 4. アマゾンのRSSフィードからフィードを取得
- 5. RSSフィードのサマリーを取得するRegex
- 6. PHPを使用してmysqlデータベースに銀行rssフィードを取得しますか?
- 7. RSSフィードの各RSSエントリの内部値を取得する(xpathexception)
- 8. Perlを使ってPhotobucket RSSフィードを解析するには?
- 9. RSSフィードのURLにアンパサンド
- 10. PHPによるRSSフィードの使用
- 11. RSSフィードの次の20項目を取得するには?
- 12. RSSフィードPHP/MySQL
- 13. C#コンソールアプリケーションを使用して他のRSSリンクからRSSフィードを取得するには?
- 14. はrssフィードを使ってブラウザ内のTwitterフィードを読む方法ですか?
- 15. rss URLからRSSフィードを読むには?
- 16. RSSフィードの動的リンクを取得する方法は?
- 17. 複雑なRSSフィードからすべてのデータを取得
- 18. Android RSSリーダー、RSSフィードを取得できませんでした
- 19. RSSフィードを表示するにはGoogle Chromeを取得してください
- 20. AndroidでXmlPullParserを使用してRSSフィードを取得する方法
- 21. PHPでRSSフィードを解析する
- 22. XMLを解析するPHPエラー(RSSフィード)
- 23. onItemClick RSSフィードからのURLを開く
- 24. iOSのは、私はRSSフィードを読み込むアプリを持っているRSS
- 25. RSSフィードにこのRSSフィードdisecting
- 26. GoogleフィードAPIから.rss .xmlなどのフィードを取得する方法
- 27. Hippo CMSのRSS機能がファセットからフィードを取得する
- 28. アンドロイドアプリの開発でライブサッカーキャンプ用RSSフィードを取得する方法
- 29. xAgentを使ってRSSフィードを読むには?私はxAgentを使用して外部のRSSフィードを読み込むしようとしています
- 30. PHPウェブサイトのTwitterフィード
こんにちは、あなたはrssのフィードURLを識別するためのhtmlソースのスクラップについて言及していますか? – Jeyaganesh