2009-07-13 2 views
0

rssがサイトのどこにあるかをブラウザに知らせるrssリンクに問題があります。リンクは、<head>のhtmlのタグにあります。リンクの例を示します。Actionscript 2の<head>からRSSリンクを取得する

<link rel="alternate" type="application/rss+xml" title="CNN - Top Stories [RSS]" href="http://rss.cnn.com/rss/cnn_topstories.rss" /> 

私の独創的なアプローチは、XMLファイルのようなサイトを治療し、タグに目を通すことだったが、ほとんどのサイトは私が探してい<link>終了タグ/>を持っていることを忘れ<meta>タグの任意の番号を持っていますはランダムな<meta>タグの子になります。

ここでは、サイトを文字列のように扱い、<link>タグを探していますが、<link>タグは任意の順序で属性を持つことができるため、問題が発生します。もちろん、私はこれを回避することができますが、最初にhrefが表示されている場合は、type="application/rss+xml"を探して、それを左右に見てください。

答えて

1

HTML解析が難しい! 1つのサイトでうまくいくソリューションを見つけたとしても、別のサイトに侵入する可能性が高くなります。あなたが人生をもっと楽にするのに役立つ図書館を見つけることができれば。

actionscript 2のhtmlパーサーが見つからない場合は、サーバースクリプトをセットアップすることができますか?同様に:

myXML.load("http://yourserver.com/cgi-bin/findrss?url=foo.com");

、その後は、それはあなたがこのアプローチをしようとすると、私はPythonライブラリBeautiful Soupをお勧めしますXML

としてURLを返してきました。私は以前にそれを使用していた、と私の意見では、それは素晴らしいです。マークアップがどれほど恐ろしいものであっても、あなたがそれを与えるどのウェブサイトでも動作します。残念ながら、私は私のためにそれを行うには、サーバーのスクリプトを設定、良い応答のためにあなたに感謝することはできません

#!/usr/bin/python 
import cgi 
import cgitb; cgitb.enable() # Optional; for debugging only 
import urllib2 
from BeautifulSoup import BeautifulSoup 

def getRssFromUrl(url): 
    try: 
     Response = urllib2.urlopen(url) 
    except Exception: 
     print "<error>error getting url</error>" 
     return [] 
    html = Response.read() 
    soup = BeautifulSoup(html) 
    rssFeeds = soup.findAll('link', attrs={"type" : "application/rss+xml"}) 
    return rssFeeds 

print "Content-type: text/xml\n\n" 
form = cgi.FieldStorage() 
if form.has_key("url") is True: 
    url = form["url"].value 
else: 
    url = "" 
print "<xml>" 
rssFeeds = getRssFromUrl(url) 
for feed in rssFeeds: 
    print ("<url>%s</url>" % feed["href"]) 
print "</xml>" 
+0

:D

それは次のようになります – Anton

関連する問題