**更新:我尝试将最终列表保存到csv文件中,发现一切正常。正如Alex H.在他的回答中提到的那样,打印列表(字符串)的结果并不总是很漂亮。
我是一个新手,刚刚开始使用python进行web数据分析。遇到这个问题很让人沮丧,我真心希望有人能帮助我解决这个问题!
我正在尝试使用从网站抓取的文本数据。下面是我的代码(请注意,我只是随机选择了一个网站来测试它的关于我们的信息)。我希望最终的ps列表只包含三个以utf-8编码的文本块。然而,当我打印每个单独编码的文本块时,结果看起来很好(所有的html格式都被删除了),但当我打印ps时,最终的附加列表html格式仍然存在。append()函数会删除编码结果吗?如果是这样,我可以做些什么来保留ps列表的编码?
import urllib2
def download(url, user_agent='wswp', num_retries=2):
print 'downloading: ', url
headers={'User-agent': user_agent}
request=urllib2.Request(url, headers=headers)
opener=urllib2.build_opener()
try:
html=opener.open(request).read()
except urllib2.URLError as e:
print 'Download error: ', e.reason
html=None
if num_retries>0:
if hasattr(e, 'code') and 500<=e.code<600:
return download(url, user_agent, num_retries-1)
return html
url='http://www.piqproducts.com/pages/who-we-are'
html=download(url)
from bs4 import BeautifulSoup
soup=BeautifulSoup(html, 'html.parser')
ps = []
for p in soup.findAll('p'):
x=p.text.encode("utf-8")
print x
ps.append(x)
print ps
for p in soup.findAll('p'):
print p.text.encode("utf-8")发布于 2016-05-06 06:38:49
这里没有真正的问题,只是不要期望在打印列表时看到漂亮的东西。你不应该为了任何实际的目的而打印这个列表,你可以通过单独处理这些项目来获得你想要的任何输出。列表有自己的字符串表示。这里是一个控制台会话,它可能会解释一点。
>>> ps = ['a', 'b', 'ç']
>>> print ps
['a', 'b', '\xc3\xa7']
>>> for p in ps: print p
...
a
b
ç
>>> print ps[2]
ç
>>> print repr(ps[2])
'\xc3\xa7'
>>> repr(ps) == str(ps)
Truehttps://stackoverflow.com/questions/37060026
复制相似问题