Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3:编辑使用urllib获取的数据_Python_Python 3.x_Urllib - Fatal编程技术网

Python3:编辑使用urllib获取的数据

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

我用urllib编写了一个程序,从一个网页(在本例中是nytimes.com)获取所有文章标题。只有一个问题。有些标题带有分号,如果打印出来,会导致难看的“There\xe2\x80\x99s”。因此,我尝试将\xe2\x80\x99替换为“但它似乎不起作用”。我认为元组有问题。不幸的是,我无法创建元组,这导致了同样的问题

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")