【python】SVG映射反爬

2020-04-13  本文已影响0人  米兰的小铁匠

SVG简述说明

SVG是用于描述二维矢量图形的一种图形格式。它基于XML描述图形,对图形进行放大或缩小操作都不会影响图形质量。
由于SVG中的图形代表的也是一个个文字,所以在使用时必须在后端或前端将真实的文字与对应的SVG图形进行映射和替换。

实例

代码示例(大众点评)(需添加已登录的请求头信息)

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 

上一篇 下一篇

猜你喜欢

热点阅读