ファイルを読み込んで追加しようとしていますが、コンテキスト マネージャを使用しているとうまくいかないようです。
このコードでは、「serien」リストのアイテムの 1 つを含むサイト上のすべてのリンクを取得しようとしています。リンクがリストにある場合は、まずリンクが既にファイルにあるかどうかを確認します。リンクが見つかった場合、リンクを再度追加しないことになっています。しかし、そうです。
正しいモードを使用していないか、何らかの形でコンテキストマネージャーを台無しにしたと推測しています。それとも私は完全に間違っていますか
import requests
from bs4 import BeautifulSoup
serien = ['izombie', 'grandfathered', 'new-girl']
serien_links = []
#Gets chapter links
def episode_links(index_url):
r = requests.get(index_url)
soup = BeautifulSoup(r.content, 'lxml')
links = soup.find_all('a')
url_list = []
for url in links:
url_list.append((url.get('href')))
return url_list
urls_unfiltered = episode_links('http://watchseriesus.tv/last-350-posts/')
with open('link.txt', 'a+') as f:
for serie in serien:
for x in urls_unfiltered:
#check whether link is already in file. If not write link to file
if serie in x and serie not in f.read():
f.write('{}\n'.format(x))
コンテキストマネージャーを使用するのはこれが初めてです。ヒントをいただければ幸いです。
編集:コンテキストマネージャーのない同様のプロジェクト。ここでもコンテキストマネージャーを使用してみましたが、同じ問題が発生したためあきらめました。
file2_out = open('url_list.txt', 'a') #local url list for chapter check
for x in link_list:
#Checking chapter existence in folder and downloading chapter
if x not in open('url_list.txt').read(): #Is url of chapter in local url list?
#push = pb.push_note(get_title(x), x)
file2_out.write('{}\n'.format(x)) #adding downloaded chapter to local url list
print('{} saved.'.format(x))
file2_out.close()
そして、コンテキストマネージャーを使用して:
with open('url_list.txt', 'a+') as f:
for x in link_list:
#Checking chapter existence in folder and downloading chapter
if x not in f.read(): #Is url of chapter in local url list?
#push = pb.push_note(get_title(x), x)
f.write('{}\n'.format(x)) #adding downloaded chapter to local url list
print('{} saved.'.format(x))