Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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
Python 使用html请求时,空格变为问号_Python_Python Requests_Python Requests Html - Fatal编程技术网

Python 使用html请求时,空格变为问号

Python 使用html请求时,空格变为问号,python,python-requests,python-requests-html,Python,Python Requests,Python Requests Html,我正在开发一个使用requests_html模块的scraper。我制作了一个程序,该程序应该从我的站点获取一些用户名,但是它返回的空格是问号 这是我的密码: self.session=AsyncHTMLSession() self.users=[] resp=等待self.session.get(self.total) 对于resp.html.find('a')中的a: 如果str(a)中的“用户”: 用户_数组=str(a).split(“”) 用户名=帐户\数组[2]。替换(“>”,“”)

我正在开发一个使用requests_html模块的scraper。我制作了一个程序,该程序应该从我的站点获取一些用户名,但是它返回的空格是问号

这是我的密码:

self.session=AsyncHTMLSession()
self.users=[]
resp=等待self.session.get(self.total)
对于resp.html.find('a')中的a:
如果str(a)中的“用户”:
用户_数组=str(a).split(“”)
用户名=帐户\数组[2]。替换(“>”,“”)
self.users.append(用户名)
打印(self.users)

通过用空格替换unicode字符修复了此问题

if u"\uFFFD" in username:
    username = username.replace(u"\uFFFD", " ")
    print(username)

当我看到一个来自HTML页面的问号时,我把它看作是一个暗示,原来的字符并不是它自称的。最常见的示例可能是右单引号(
或U+2019)而不是撇号(
或U+0027),但可以使用无中断空格(U+00A0)而不是真空格(U+0020)。如果您有字符集问题(拉丁文1解码为UTF-8),您将得到不可显示字符的问号。只是一个评论,因为我可以确定它与您的问题相关…您建议我如何让它显示空间?我试图将其写入atm文件中,当应该有一个空格时,它是一个菱形,里面有一个问号/Unicode\ufffdU+FFFD是替换字符。我现在非常确定您的文件或字节字符串包含0xa0字节。仍然不是答案,因为我猜不出它的确切来源。但我再次假设您正在以UTF8的形式处理一个拉丁1字节字符串。这些链接中的一个看起来像什么?当您执行
find('a')
然后执行
str(a)
时,该字符串是
元素
对象的字符串表示形式,例如
。因此,您正在进行的字符串解析可能非常脆弱,而不是您想要的。如果要查找的特定链接在页面中的某个特定位置,则可以使用XPath选择器来缩小其范围。您希望在哪里找到字符串
“user”
?在元素的文本中(
a.text
)?或者在属性(
a.attrs
)中?如果您想回答我的问题,也许我可以为您的问题提供一个总体上更好的解决方案。你现在的代码不是一个非常有效的方法,即使它碰巧“工作”:(无论如何,先生,谢谢你,尽管效率不是我关心的问题。这不仅仅是效率,而且是正确性和简单性。您所写的内容很可能会中断,并且可以大大简化。我想给你省去路上的麻烦。只是不太清楚你想做什么。当然,你需要什么才能让它正常工作而不至于成为一个廉价的黑客。例如,你的
str(a)
字符串的on是什么样子的?如果不确定,请在代码中添加
print(repr(str(a))