Unescape十六进制代码点\u0026而不更改Python中的编码

Unescape十六进制代码点\u0026而不更改Python中的编码,python,encoding,web-scraping,scrapy,hex,Python,Encoding,Web Scraping,Scrapy,Hex,在抓取时,我在提取的数据中得到十六进制代码点,如\u002639;和\u003c。问题是在提取时,通过在它们前面加一个\来进行转义,如\\u002639和\\u003c。所以我用 Tag = response.xpath("//script[contains(.,'" + SplitString + "')]").extract() Tag = Tag[0].split(SplitString) Tag = Tag[1].split("\"]") Tag = codecs.getdecoder(

在抓取时,我在提取的数据中得到十六进制代码点,如\u002639;和\u003c。问题是在提取时,通过在它们前面加一个\来进行转义,如\\u002639和\\u003c。所以我用

Tag = response.xpath("//script[contains(.,'" + SplitString + "')]").extract()
Tag = Tag[0].split(SplitString)
Tag = Tag[1].split("\"]")
Tag = codecs.getdecoder('unicode_escape')(Tag[0])[0]
但是使用unicode_escape的问题是,它会改变一些特殊符号,例如您可以使用tag.encode'utf-8'来正确编码字符串。这将返回字节,这意味着您在写入文件时必须使用wb,例如f=open'filename,'wb'。下面的脚本现在对字符串进行编码

从scrapy.selector导入选择器
body='AF_initDataCallback{key:\'ds:4\',isError:false,hash:\'17\',data:function{return[[Machineship]\n,null,null,[1]\n,null,[[cbsqarukezjnd8bdcahwki2gkhv8zdta\u003d][cbsqarukejnd8bdcahwki2gkhv8zdta\u003d]][[null,享受不同类型的杂志和娱乐\u003cbr\u003e3关于各种支持的经典规则。\u003cbr\u003e\u003cbr\u003e[功能]\u003cbr\u003e-1到最多4个可以加入\u003cbr\u003e-您可以选择三种不同模式中的一种。\u003cbr\u003e-:\u003cbr\u003ehttps://www.example.com]\n,,[null,Best\u0026quot;无广告\u0026quot;儿童娱乐!\u003cbr\u003eSplitString指的是什么?设置标记后,您如何处理标记?能否提供一个简短的问题工作示例,我将尝试复制该问题以查看发生了什么。SplitString是一个字符组合,首先用于查找p从网站的脚本标记中提取文本,然后从该节点中分割文本,或具体地分割=]\n,[bullpup,我写了一个快速的scraper,上面写着&39;已经添加了脚本片段。为了澄清您会为该示例的SplitString输入什么?先生,但当我这样做时,它显示为最佳的\u0026quot;无广告\u0026quot;儿童娱乐!\u003cbr\u003e您使用的是哪一个版本的Python?Python 3.6.5 v3.6.5:f59c0932b4,2018年3月28日,17:00:18[MSC v.1900 64位AMD64]在Win32上,您有机会了解一下吗?我已经更新了我的答案,认为它对您有用。