.txt ファイルの各行から URL を取得し、PyQuery を実行して LyricsWiki から歌詞データを取得するプログラムを作成しようとしていますが、実際に PyQuery のものを入れるまではすべて正常に動作しているようです。そうです:
full_lyrics = ""
#open up the input file
links = open('links.txt')
for line in links:
full_lyrics += line
print(full_lyrics)
links.close()
期待どおりにすべてが出力され、すべてのデータが含まれる 1 つの大きな文字列が出力されます。ただし、実際の html 解析を実装すると、最後の URL からのみ歌詞が取得され、それ以前のすべての歌詞がスキップされます。
import requests, re, sqlite3
from pyquery import PyQuery
from collections import Counter
full_lyrics = ""
#open up the input file
links = open('links.txt')
output = open('web.txt', 'w')
output.truncate()
for line in links:
r = requests.get(line)
#create the PyQuery object and parse text
results = PyQuery(r.text)
results = results('div.lyricbox').remove('script').text()
full_lyrics += (results + " ")
output.write(full_lyrics)
links.close()
output.close()
Powershell でのエンコードの問題を回避するために、txt ファイルに書き込みます。とにかく、プログラムを実行して txt ファイルを開くと、links.txt ドキュメントの最後のリンクの歌詞しか表示されません。
参考までに、「links.txt」には、次のように、歌詞ウィキの曲ページへのリンクがいくつか含まれている必要があり ます 。
「web.txt」は空白の出力ファイルである必要があります。
pyquery が for ループを壊すのはなぜですか? ファイルの個々の行を連結するなど、より単純なことを行う場合は明らかに機能します。