SVG反爬
2020-08-11 本文已影响0人
凉风有信2020
SVG反爬即是映射反爬,通过不给你真实的编码来实现反爬的目的。
比如大众点评的商家电话这些有价值的数据,网站
大众点评
检查源代码,发现关键数据用了网页特殊的编码,所以读取不出来
源代码
解决办法:
新建一字典手动保存映射关系,在需要输出时使用字典中的value替换。
代码:
import requests
from bs4 import BeautifulSoup
import re
url = "http://www.dianping.com/shop/G42raZgZrwxB69Oj"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
}
mapping = {
"\ueef9": "0",
"\uf8e2": "8",
"\ue5ea": "4",
"\uea34": "9"
}
res = requests.get(url=url,headers=headers)
soup = BeautifulSoup(res.text,"html.parser")
tels = str(soup.select(".expand-info.tel")[0]).split("**")[:-1]
for tel in tels:
num_list = []
for char in tel:
if char =='1' or char =='-':
num_list.append(char)
elif char in mapping:
num_list.append(mapping[char])
tel_num = "".join(num_list).lstrip("-")
print(tel_num)