ウェブサイトの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 XMLデータを取得しURLへのリクエストを作っていますRSSフィードを取得し、コレクション
- 2. PHP - RSSフィードから画像URLを取得
- 3. RSSフィードから画像URLを取得するにはアンドロイド
- 4. PHPを使用してXML rssフィードからcontent-elementを取得するには?
- 5. 複数のウェブサイトからRSSフィードを取得する方法
- 6. javascriptとajaxを使ってweather RSSフィードからデータを取得するには?
- 7. アマゾンのRSSフィードからフィードを取得
- 8. RSSフィードのサマリーを取得するRegex
- 9. RSSフィードからエンクロージャーURLを取得する
- 10. PHPを使用してmysqlデータベースに銀行rssフィードを取得しますか?
- 11. Azure関数を使用してRSSフィードを取得する
- 12. PHP読書RSSフィード私はRSSフィードを読んでいます
- 13. Firebaseを使ってRSSフィードリーダーFireをフィード
- 14. RSSフィードの各RSSエントリの内部値を取得する(xpathexception)
- 15. RSSフィードのURLにアンパサンド
- 16. PHPによるRSSフィードの使用
- 17. RSSフィードPHP/MySQL
- 18. Perlを使ってPhotobucket RSSフィードを解析するには?
- 19. RSSフィードの次の20項目を取得するには?
- 20. WordpressアドオンはJoomlaのウェブサイトからRSSフィードを取得できません
- 21. SQL - RSSフィードを取得してSQLに挿入する
- 22. Visual StudioのRSSフィードURL
- 23. volleyを使ってrssフィードを解析する方法は?
- 24. C#コンソールアプリケーションを使用して他のRSSリンクからRSSフィードを取得するには?
- 25. rss URLからRSSフィードを読むには?
- 26. はrssフィードを使ってブラウザ内のTwitterフィードを読む方法ですか?
- 27. RSSフィードの動的リンクを取得する方法は?
- 28. URLを使って任意のウェブサイトから画像を取得するには
- 29. Android RSSリーダー、RSSフィードを取得できませんでした
- 30. PHPのRSSフィード検証
こんにちは、あなたはrssのフィードURLを識別するためのhtmlソースのスクラップについて言及していますか? – Jeyaganesh