同时试图获取一个.“学术”网站我在解码方面有困难。我正在使用请求命令:
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\". 字节。凉爽的。我尝试用提到的各种格式使用.decode("format") (iso、latin、utf、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:根据这个问答,我不能发布链接,也不能参考网页。
尽管这个问题与解码源代码有关,但如果您能够指出替代解决方案(即,对于我尝试过的其他方法,请参见下文),这也将是很好的。
1)我尝试使用selenium,但以下内容阻止它获得源代码:“由于与Firefox新特性的兼容性问题,可访问性支持部分被禁用。”(问题似乎是登录到站点所需的附加项)
Selenium代码:
driver = webdriver.Firefox()
driver.get(url)
htmlSource = driver.page_source
driver.quit()
soup = BeautifulSoup(htmlSource,'lxml')2)使用urllib也不起作用,它抛出了HTTPError 302无限循环。我试着用炊具,但没有用。
发布于 2017-04-02 15:25:12
根据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')添加一个插件。但是,任何形式的插件配置,我都无法控制。
https://stackoverflow.com/questions/43169669
复制相似问题