Python3:编辑使用urllib获取的数据
我用urllib编写了一个程序,从一个网页(在本例中是nytimes.com)获取所有文章标题。只有一个问题。有些标题带有分号,如果打印出来,会导致难看的“There\xe2\x80\x99s”。因此,我尝试将\xe2\x80\x99替换为“但它似乎不起作用”。我认为元组有问题。不幸的是,我无法创建元组,这导致了同样的问题Python3:编辑使用urllib获取的数据,python,python-3.x,urllib,Python,Python 3.x,Urllib,我用urllib编写了一个程序,从一个网页(在本例中是nytimes.com)获取所有文章标题。只有一个问题。有些标题带有分号,如果打印出来,会导致难看的“There\xe2\x80\x99s”。因此,我尝试将\xe2\x80\x99替换为“但它似乎不起作用”。我认为元组有问题。不幸的是,我无法创建元组,这导致了同样的问题 import urllib.request import urllib.parse import re url = 'https://www.nytimes.com/' h
import urllib.request
import urllib.parse
import re
url = 'https://www.nytimes.com/'
headers = {}
headers['User-Agent'] = 'Mozilla/5.0 (X11; Linux i686)'
req = urllib.request.Request(url, headers = headers)
resp = urllib.request.urlopen(req)
resp_data = resp.read()
par = re.findall(r'story-heading"><a href="(.*?)">(.*?)</a>',str(resp_data))
for n in par:
print(n[1])
print(n[1].replace("\xe2\x80\x99","'"))
导入urllib.request
导入urllib.parse
进口稀土
url='1〕https://www.nytimes.com/'
标题={}
标题['User-Agent']=“Mozilla/5.0(X11;Linux i686)”
req=urllib.request.request(url,headers=headers)
resp=urllib.request.urlopen(req)
resp_data=resp.read()
PAR=Re.FANDALL(R'StouthDead)>,STR(ReXiDATA)
对于标准杆中的n:
打印(n[1])
打印(n[1]。替换(“\xe2\x80\x99”,“”))
我试图从元组中创建字符串变量,但没有任何效果。我知道使用BeautifulSoup有另一种解决方案,但我想我会尝试找到自己的方法。您看到的是字符串的repr(),因此是有趣的字符。如果需要,请将其强制为字符串。查看我的结果:
>>> print repr(n[1])
'There\xe2\x80\x99s'
>>> print str(n[1])
There’s
总之:用str()将n[1]包装起来。您必须更改这一行:
resp_data = resp.read()
致:
这项工作将会完成
解释:
我猜,该网站正在使用ut8
编码,因此您必须将返回的字节解码为utf8
字符串,该字符串可以更好地表示您想要的内容
PS:您可以在decode()中使用resp.read().decode()
而无需参数
方法,您可以让Python猜测编码类型。我已经尝试过了,但不幸的是,这无法解决问题。尽管如此,我还是希望您愿意提供帮助。谢谢。它正在帮助您。如果您的需要得到满足,您可以投票和/或接受此答案。
resp_data = resp.read().decode("utf8")