首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >取消转义十六进制代码点\u0026,而不更改Python中的编码

取消转义十六进制代码点\u0026,而不更改Python中的编码
EN

Stack Overflow用户
提问于 2018-07-22 00:22:39
回答 1查看 325关注 0票数 -1

在抓取时,我在提取的数据中获得十六进制代码点,如\u0026#39;和\u003c。问题是在提取时,它们通过在前面得到一个"\“来进行转义,就像\u0026#39和\u003c一样。所以为了解决这个问题,我用了

代码语言:javascript
复制
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“的问题是,它改变了一些特殊的符号,如❤️❤️,并将其转换为ŸŽˆ。那么我该如何应对呢?

源代码中的脚本如下所示:

代码语言:javascript
复制
<script nonce="q0OGvOrA73kvqp+Tk1lGIR+glJc">AF_initDataCallback({key: 'ds:4', isError:  false , hash: '17', data:function(){return [[["Machineship"]
,null,null,[1]
,null,[["CBSqARUKEwiZjNDE8bDcAhWKI2gKHV8ZDtA\u003d"]
,["CBSqARUKEwiYjNDE8bDcAhWKI2gKHV8ZDtA\u003d"]],[[null,"Enjoy different kind of magazines and entertainment\u003cbr\u003e3 on the various supported classic rule.\u003cbr\u003e\u003cbr\u003e[Feature]\u003cbr\u003e- 1 to max 4 can join\u003cbr\u003e- You can select one of three different patterns.\u003cbr\u003e- :\u003cbr\u003ehttps://www.example.com"]
,[null,"Best \u0026quot;ad-free\u0026quot; entertainment for kids!\u003cbr\u003e❤️❤️"]
]
,null,[[[null,2,[800,1200]............... </script>

我想从中提炼出:给孩子们最好的“无广告”娱乐!

❤️❤️

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-22 05:38:51

你可以使用tag.encode('utf-8')对字符串进行正确的编码,这将返回字节,这意味着在写入文件时必须使用wb,例如f = open('filename, 'wb')。下面的脚本现在对字符串进行了编码。

代码语言:javascript
复制
from scrapy.selector import Selector

body = '<script nonce="q0OGvOrA73kvqp+Tk1lGIR+glJc">AF_initDataCallback({key: \'ds:4\', isError:  false , hash: \'17\', data:function(){return [[["Machineship"]\n,null,null,[1]\n,null,[["CBSqARUKEwiZjNDE8bDcAhWKI2gKHV8ZDtA\u003d"]\n,["CBSqARUKEwiYjNDE8bDcAhWKI2gKHV8ZDtA\u003d"]],[[null,"Enjoy different kind of magazines and entertainment\u003cbr\u003e3 on the various supported classic rule.\u003cbr\u003e\u003cbr\u003e[Feature]\u003cbr\u003e- 1 to max 4 can join\u003cbr\u003e- You can select one of three different patterns.\u003cbr\u003e- :\u003cbr\u003ehttps://www.example.com"]\n,[null,"Best \u0026quot;ad-free\u0026quot; entertainment for kids!\u003cbr\u003e❤️❤️"]\n]\n,null,[[[null,2,[800,1200]............... </script>'

split_string = 'm"]\n,[null,"'

tag = Selector(text=body).xpath("//script[contains(.,'" + split_string + "')]").extract()

tag = tag[0].split(split_string)
tag = tag[1].split("\"]")
tag = tag[0]

f = open('test.txt', 'wb')
tag = tag.encode('utf-8')
f.write(tag)
f.close()

print('done')

打印:Best &quot;ad-free&quot; entertainment for kids!<br>❤️❤️

我不确定双斜杠是从哪里得到的,但实际上可能需要它们来转义字符串中的斜杠,所以可能不会造成问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51458016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档