Crossin的编程教室

标题: 网页中的自定义字体如何获得原始的编码? [打印本页]

作者: fa2003    时间: 2018-9-1 21:17
标题: 网页中的自定义字体如何获得原始的编码?
本帖最后由 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, 下载次数: 431)

1535808146746.jpg


作者: crossin先生    时间: 2018-9-1 22:51
我不知道有没有现成的转换方法,但仅你这个项目来说不需要,一共就10个字符,你把 utf8List 里替换成 /u 的字符就好了啊
如果不确定对应关系可以看这个
https://www.utf8-chartable.de/un ... p;unicodeinhtml=hex
作者: fa2003    时间: 2018-9-1 23:21
感谢老师的帮助,已经都弄好了。估计是之前的代码有问题吧。老师辛苦了。祝老师周末愉快。




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5