首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用for循环的PyQuery Python

不使用for循环的PyQuery Python
EN

Stack Overflow用户
提问于 2014-10-31 09:11:35
回答 1查看 455关注 0票数 1

我正试图编写一个程序,从.txt文件的每一行中提取urls,并执行一个PyQuery来从LyricsWiki中刮取歌词数据,在我实际将PyQuery内容放进去之前,一切看起来都很好。例如,当我这样做时:

代码语言:javascript
复制
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中提取歌词,并跳过所有前面的url。

代码语言:javascript
复制
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”应该包含几个指向歌词页面的链接,如:Off 5:Animals

'web.txt‘应该是一个空白的输出文件。

为什么pyquery会中断for循环?当它做一些更简单的事情时,它显然会工作,比如只是连接文件的各个行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-22 18:13:15

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

我建议您在for之后对行变量执行右带操作,如下所示:

代码语言:javascript
复制
for line in links:
    line = line.rstrip()
    r = requests.get(line)
    ...

应该管用的。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26670972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档