设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6349|回复: 2
打印 上一主题 下一主题

网页中的自定义字体如何获得原始的编码?

[复制链接]

4

主题

0

好友

52

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2018-9-1 21:17:33 |只看该作者 |倒序浏览
本帖最后由 fa2003 于 2018-9-1 21:24 编辑

老师您好,我们尝试抓取并识别猫眼的自定义字体(http://maoyan.com/cinema/2661?poi=2363913)来获得电影票价格。目前根据网上的开源资料已经能识别出每个字体编码对应的数字,并拼接成了HTML中看到的编码样式。
numList=['6', '2', '7', '4', '5', '1', '8', '0', '9', '3']
utf8List=['& #xf22f', '& #xebc4', '& #xebaf', '& #xeeb1', '& #xeca2', '& #xe8d6', '& #xe6ee', '& #xec30', '& #xf446', '& #xf35a']

但是,在python3.7下我们无法获取页面中带有&#x的编码——<span class="sell-price"><span class="stonefont">& #xf22f;& #xeca2;.& #xf446;</span></span>
上述内容中的& #xf22f;& #xeca2;.& #xf446; 在python3中只能显示为:
'\uebc4\uebc4.\uebaf'

也就是\u开头的十六进制数,而不是保存成HTML文件后看到的&#x开头的编码。现在我想获得& #xf22f;这种形式的字符串,然后用replace的方式去变成最后对应的价格。应该如何转码那?望老师指教。

获取数据我们采用的是requests对象,解析用的是BeautifulSoup。
解析的方式为:
sell_price = td[3].find('span',class_='stonefont').get_text()

下面是尝试替换的代码,但始终无法成功:
for i in range(len(utf8List)):
      sell_price = sell_price.replace(utf8List,numList)


参考的项目:
http://www.mamicode.com/info-detail-2387785.html





1535808146746.jpg (50.27 KB, 下载次数: 435)

1535808146746.jpg

回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2018-9-1 22:51:16 |只看该作者
我不知道有没有现成的转换方法,但仅你这个项目来说不需要,一共就10个字符,你把 utf8List 里替换成 /u 的字符就好了啊
如果不确定对应关系可以看这个
https://www.utf8-chartable.de/un ... p;unicodeinhtml=hex
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

4

主题

0

好友

52

积分

注册会员

Rank: 2

板凳
发表于 2018-9-1 23:21:26 |只看该作者
感谢老师的帮助,已经都弄好了。估计是之前的代码有问题吧。老师辛苦了。祝老师周末愉快。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-24 10:15 , Processed in 0.025364 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部