2016-06-24 4 views
1

rssプログラムのヘルプをお願いします。私がやっていることは、自分のプロジェクトに関連する情報が含まれているサイトを収集し、RSSフィードがあるかどうかを確認することです。 リンクはtxtファイル(各行に1つのリンク)に保存されています。 だから私はrssのためにチェックする必要があるベースURLの完全なtxtファイルがあります。Pythonのtxtファイルからリンクを開きます

私の仕事をはるかに容易にするこのコードが見つかりました。

import requests 
from bs4 import BeautifulSoup 

def get_rss_feed(website_url): 
    if website_url is None: 
     print("URL should not be null") 
    else: 
     source_code = requests.get(website_url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text) 
     for link in soup.find_all("link", {"type" : "application/rss+xml"}): 
      href = link.get('href') 
      print("RSS feed for " + website_url + "is -->" + str(href)) 

get_rss_feed("http://www.extremetech.com/") 

しかし、収集したURLを1つ1つずつ入力するのではなく、txtファイルから開きたいと思います。

だから私はこれを使用してプログラムを拡張するためにしようと試みています

from bs4 import BeautifulSoup, SoupStrainer 

with open('test.txt','r') as f: 
    for link in BeautifulSoup(f.read(), parse_only=SoupStrainer('a')): 
     if link.has_attr('http'): 
      print(link['http']) 

しかし、これはbeautifoulsoupがHTTPクライアントではないことを言って、エラーで戻っています。

私もこれで拡張されている:「」

def open() 
    f = open("file.txt") 
    lines = f.readlines() 
    return lines 

しかし、これは私で区切られたリストを与えた

誰かが私に

答えて

0

を助けることができるかどう私は本当にthankfullだろうあなたがurllibを使って作ることができると思います。

import urllib 
    f = open('test.txt','r') 
    #considering each url in a new line... 
    while True: 
    URL = f.readline() 
    if not URL: 
     break 
    mycontent=urllib.urlopen(URL).read() 
+0

速いヘルプありがとう! txtファイルの場所はどこで定義する必要がありますか? – Platy

+0

反復トラフテキストファイルに問題がある場合は、次のようにしてください。[http://stackoverflow.com/a/5733487/6495164] – danielarend

1

通常、あなたはt彼は:

with open('links.txt', 'r') as f: 
    for line in f: 
     get_rss_feed(line) 

また、それはあなたが組み込み関数openを交換する場合を除き名openで関数を定義することは悪い考えです。

+0

ありがとうございます。 アドバイスをいただきありがとうございます、私はそれを逃しました – Platy

+0

私はあなたの提案したコードをプログラムに挿入しました。これで、エラーメッセージなしで結果が返ってきます。 ルートの@ LOKO:〜#はsudo pythonの/root/Desktop/rsskeres.py ルートの@ LOKO:〜私はあなたのコードから行をプリントアウトした場合/root/Desktop/rsskeres.py #はsudo pythonのiは、URLを取得 root @ loko:〜#sudo python /root/Desktop/nyit3.py http://www.theguardian.com/ これは元のプログラムが返すものです: root @ loko:〜#sudo python /root/Desktop/rsskeres.py http://www.theguardian.com/isのRSSフィード - > \t http://www.theguardian.com/international/rss 何が問題なのですか? – Platy

+0

私はあなたが 'line.rstrip()' –

関連する問題