Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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/3/html/85.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 使用lxml和请求进行HTML抓取时会出现unicode错误_Python_Html_Unicode_Web Scraping_Lxml - Fatal编程技术网

Python 使用lxml和请求进行HTML抓取时会出现unicode错误

Python 使用lxml和请求进行HTML抓取时会出现unicode错误,python,html,unicode,web-scraping,lxml,Python,Html,Unicode,Web Scraping,Lxml,我正在尝试使用HTML刮刀一样,提供了一个。对于他们提供的示例,它工作得很好。但是,当我尝试将其用于时,收到此错误-不支持带有编码声明的Unicode字符串。请使用无声明的字节输入或XML片段。 我尝试过谷歌搜索,但找不到解决办法。我真的很感激任何帮助。我想知道是否有办法使用Python将其复制为HTML 编辑: from lxml import html import requests page = requests.get('http://cancer.sanger.ac.uk/cosmi

我正在尝试使用HTML刮刀一样,提供了一个。对于他们提供的示例,它工作得很好。但是,当我尝试将其用于时,收到此错误-
不支持带有编码声明的Unicode字符串。请使用无声明的字节输入或XML片段。
我尝试过谷歌搜索,但找不到解决办法。我真的很感激任何帮助。我想知道是否有办法使用Python将其复制为HTML

编辑:

from lxml import html
import requests
page = requests.get('http://cancer.sanger.ac.uk/cosmic/gene/analysis?ln=PTEN&ln1=PTEN&start=130&end=140&coords=bp%3AAA&sn=&ss=&hn=&sh=&id=15#')
tree = html.fromstring(page.text)

谢谢。

简短回答:使用
page.content
,而不是
page.text

发件人:

lxml.etree中的解析器可以直接处理unicode字符串。。。但是,这要求unicode字符串本身不指定冲突的编码,从而隐瞒其真实编码

发件人:

请求将自动解码来自服务器的内容[作为
r.text
]。。。您还可以以字节的形式访问响应正文[作为
r.content
]

您可以看到,
requests.text
lxml.etree
都希望将utf-8解码为unicode。但是如果我们让
requests.text
进行解码,那么xml文件中的编码语句就变成了谎言


因此,让我们进行
请求。内容
不进行解码。这样,
lxml
将收到一个始终未编码的文件。

请将您的刮板减少到最小的程序,使其仍然显示错误,并将该短程序复制粘贴到您的问题中。有关详细信息,请参阅ᵩ 我添加了代码,错误仍然是一样的:不支持带有编码声明的Unicode字符串。请使用无声明的字节输入或XML片段。这很有帮助。谢谢你。这工作做得很好,谢谢你