解码字节似乎无法解码

时间:2017-04-02 14:47:32

标签: python python-3.x selenium encoding python-requests

在尝试获取某个人的html来源时..."学术界"网站我遇到解码问题。我正在使用请求命令:

resp = requests.get(url)
print(resp.content)

编辑:我确实尝试了resp.text

结果是这样的:

"b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\". 

字节。凉。我尝试使用提及here this Q&A .decode("format")isolatinutf的各种格式的cp,但我没有运气。

以下是其中一些印刷品:

UTF-8:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

拉丁语-1:

"ÿØÿàJFIFÿÛC         2! !222222222222222222222222ĵ}"

iso8859_2:

"˙Ř˙ŕJFIF˙ŰC         2!!2222222222"

编辑2:根据documentation,我无法发布链接或参考网页。

即使这个问题是关于解码源的问题,如果你能指出替代解决方案(即我试过的其他方法,见下文),也会很棒。

1)我尝试使用selenium,但以下内容阻止它获取源:"由于新Firefox功能的兼容性问题,部分禁用了辅助功能支持。" (问题似乎是登录网站所需的附加组件)

Selenium代码:

driver = webdriver.Firefox()
driver.get(url)
htmlSource = driver.page_source
driver.quit()
soup = BeautifulSoup(htmlSource,'lxml')

2)使用urllib也没有工作,并且它抛出了一个HTTPError 302无限循环。我尝试使用cookiejar但无济于事。

1 个答案:

答案 0 :(得分:0)

根据https://stackoverflow.com/a/41068125/7432972

resp.text应该在您的情况下返回Unicode文本。

请回复并告诉我这是否有效,因为我之前从未遇到过这个问题,可能是因为我总是使用request_response.text,除非将回复反馈到bs4

编辑:

根据@Ilja_Everilä,您获得了一个图像作为响应,而不是您正在寻找的来源。我会检查您为该请求收到的响应代码(resp.status_code),它有可能不会是200,这意味着服务器会返回一些其他消息作为响应。如果是这种情况,将user-agent更改为其他内容可能会解决问题,尽管看起来有问题的网站至少不需要来自requests模块的请求。

或者,更有可能的是,它与您提到的登录所需的插件有关。可以通过selenium.webdriver.FirefoxProfile().add_extension('/path/to/addon')添加插件。但是,对于插件的任何配置,我都无法帮助。