python beautifulsoup可以';粉饰

python beautifulsoup可以';粉饰,python,beautifulsoup,Python,Beautifulsoup,我好像做错了什么事。我有一个使用urllib提取的HTML源代码。基于这个HTML文件,我使用beautifulsoup查找ID为指定数组的元素。这对我来说是可行的,但是输出很混乱,包括换行符“\n” Python:2.7.12 美化组:bs4 我曾尝试使用prettify()更正输出,但总是出现错误: 属性错误:结果集对象没有属性“美化” import urllib import re from bs4 import BeautifulSoup cfile = open("test.tx

我好像做错了什么事。我有一个使用urllib提取的HTML源代码。基于这个HTML文件,我使用beautifulsoup查找ID为指定数组的元素。这对我来说是可行的,但是输出很混乱,包括换行符“\n”

  • Python:2.7.12
  • 美化组:bs4
我曾尝试使用prettify()更正输出,但总是出现错误:

属性错误:结果集对象没有属性“美化”

import urllib
import re
from bs4 import BeautifulSoup

cfile = open("test.txt")
clist = cfile.read()
clist = clist.split('\n')

i=0

while i<len (clist):
    url = "https://example.com/"+clist[i]
    htmlfile = urllib.urlopen (url)
    htmltext = htmlfile.read()

    soup = BeautifulSoup (htmltext, "html.parser")
    soup = soup.findAll (id=["id1", "id2", "id3"])

print soup.prettify()
i+=1

我只是不知道是什么。对不起,如果这是一个愚蠢的问题。我使用Python和Beautiful Soup才几天。

您正在将
Soup
变量重新分配给
.findAll()
的结果,这是一个
ResultSet
对象(基本上是一个标记列表),它没有
prettify()
方法

解决方案是保持
soup
变量指向
BeautifulSoup
实例。

findAll返回匹配标记的列表,因此您的代码等于
[tag1,tag2..]。prettify()

调用
findAll()
后,汤的类型是什么?运行
type(soup)
“输出混乱且包含换行符”\n”“-哪个输出?你从哪里得到你不满意的结果?在您给出的代码中,唯一可以输出任何内容的是
print soup.prettify()
,因为您说它会抛出错误,所以它不能输出。你最终想做什么?如果在每个元素上使用
.text
属性会怎么样?@CivFan当然是
结果集
?@AlexHall只是想引导Eric找到自己的答案
alecxe
在他的回答中明确了这一点。
soup = soup.findAll (id=["id1", "id2", "id3"])