PyQuery Python不使用for循环

PyQuery Python不使用for循环,python,html,python-3.x,pyquery,Python,Html,Python 3.x,Pyquery,我正试图编写一个程序,从.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() 它按

我正试图编写一个程序,从.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()
它按预期打印出所有内容,一个包含所有数据的大字符串。然而,当我实现实际的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()
我正在写入txt文件,以避免Powershell的编码问题。无论如何,在我运行程序并打开txt文件后,它只显示links.txt文档上最后一个链接的歌词

作为参考,“links.txt”应包含指向lyricswiki歌曲页面的多个链接,如下所示:

“web.txt”应为空输出文件


为什么pyquery打破了for循环?当它做一些更简单的事情时,例如仅仅连接文件的各行时,它显然可以工作。

问题是从文件(links.txt)读取的每一行中都有额外的换行符。尝试打开links.txt中的另一行,您将看到即使最后一个条目也不会被处理

我建议您在for之后对line变量执行正确的strip,如下所示:

for line in links:
    line = line.rstrip()
    r = requests.get(line)
    ...
它应该会起作用

我还认为,获取html不需要请求。尝试
results=PyQuery(line)
,看看它是否有效