我目前正处于 Python3 的学习过程中,我正在为一些数据抓取一个站点,效果很好,但是在打印出 p 标签时,我无法按预期工作。
import urllib
import lxml
from urllib import request
from bs4 import BeautifulSoup
data = urllib.request.urlopen('www.site.com').read()
soup = BeautifulSoup(data, 'lxml')
stat = soup.find('div', {'style' : 'padding-left: 10px';})
dialog = stat.findChildren('p')
for child in dialog:
childtext = child.get_text()
#have tried child.string aswell (exactly the same result)
childlist.append(childtext.encode('utf-8', 'ignore')
#Have tried with str(childtext.encode('utf-8', 'ignore'))
print (childlist)
一切正常,但打印是“字节”
b'This is a ptag.string'
b'\xc2\xa0 (probably  '
b'this is anotherone'
ascii 编码的真实示例文本:
b"Announcementb'Firefox users may encounter browser warnings encountering SSL SHA-1 certificates"
请注意,Announcement 是 p,其余是 'strong' 在 ap 标签下。
使用 utf-8 编码的相同样本
b"Announcement\xc2\xa0\xe2\x80\x93\xc2\xa0b'Firefox users may encounter browser warnings encountering SSL SHA-1 "
我希望得到:
"Announcement"
(newline / new item in list)
"Firefox users may encounter browser warnings encountering SSL SHA-1 certificates"
如您所见,不正确的字符在“ascii”中被删除,但有些字符会
破坏一些换行符,我还没有弄清楚如何正确打印,而且 b 仍然在那里!
我真的不知道如何删除 b 并正确编码或解码。我已经尝试了所有可以搜索到的“解决方案”。
HTML 内容 = utf-8
我最不想在处理之前更改完整的数据,因为它会扰乱我的其他工作,我认为没有必要。
美化不起作用。
有什么建议么?