SVG简述说明
SVG是用于描述二维矢量图形的一种图形格式。它基于XML描述图形,对图形进行放大或缩小操作都不会影响图形质量。
由于SVG中的图形代表的也是一个个文字,所以在使用时必须在后端或前端将真实的文字与对应的SVG图形进行映射和替换。
实例
-
下图中我们可以看到在定位源代码中的电话部分的html文件的标签内容(单个号码数字)都是一样的,我们需要去寻找真正的源代码内容
大众点评示例 -
在Network中寻找搜索
真正的源代码部分 -
需要对比其数字代码所代表的数字,获得数字映射(其中1正常显示的)
映射 - 这样子我们就很简单的进行电话号码的获取了
代码示例(大众点评)(需添加已登录的请求头信息)
import requests
from lxml import etree
from copyheaders import headers_raw_to_dict
# 定义映射关系
mappings= {
'\uf8e2':'0',
'\uf42d':'2',
'\uf5c1':'3',
'\uf5d4':'4',
'\ue71d':'5',
'\ue4f5':'6',
'\uf2c0':'7',
'\uf223':'8',
'\uea15':'9'
}
mappings_list = []
url = 'http://www.dianping.com/shop/G41TRhMLL80DPFTN'
h = '''
添加请求头
'''
h = bytes(h, encoding="utf-8")
headers = headers_raw_to_dict(h)
respones = requests.get(url, headers=headers)
company_html = etree.HTML(respones.text)
# print(company_data)
nums = company_html.xpath('//p[@class="expand-info tel"]//text()')
print('查询结果:', nums)
for i in nums:
if '1' in i or ' ' in i:
mappings_list.append(i)
continue
num = mappings.get(i)
if num is None:
continue
mappings_list.append(num)
print(''.join(mappings_list))
- 返回输出
查询结果: [' ', '电话:', ' ', '\uf8e2', '\uf42d', '1-', '\ue4f5', '\uf5d4', '\uf8e2', '\uf5c1', '\uf8e2', '\uf2c0', '\uf5c1', '1 ']
021-64030731
完
网友评论