网页抓取 加密html(分析网页内容()原网址_分析_e操盘(图))
优采云 发布时间: 2022-04-10 15:07网页抓取 加密html(分析网页内容()原网址_分析_e操盘(图))
分析网页内容
原网址:
大家在爬网页的时候会遇到各种问题,比如字体加密,但是我爬公众评论网站的时候发现里面的字体和文字没有加密不同,使用css定位来显示需要的文字和数字,如图:
只显示跨度标签和类,没有数字信息。
通过查看css信息,你会发现里面有一个URL,
打开网站,发现里面有数字信息,用来显示价格等信息。
查看元素的反复对比,发现css定位是用来展示需要的信息,span标签中class的定位,
我知道如何解析它,然后如何获取该类在span中的定位信息。直接从页面抓取不是很明显,只能另寻他法。
刚查了一下页面的源码,发现这个网站,有这么一个注释,发现服务器里也加载了下面的css样式,然后访问了一下,有惊喜
访问 css 网址
里面的信息正是我们想要的,
这样我们就可以编写代码来通过解析这两个 URL 来解密文本和数字,
写代码解密
这里我就简单写一下具体的解密过程,所以写的代码不是很规范,并没有爬取整个网页。
根据上面的分析,我们需要先获取span标签中的class。我们以上面两个例子为例来演示解密:
# 9
# 5
根据类名,如:hkcc8,获取类名的定位值
# 导的包
import re
import requests
import lxml.html
# 获取css页面的详情信息,用正则匹配得到css的定位数据
def css_info(info):
# css 页面 这个网址是会变化的,修改为自己获取到的
css_html = requests.get('https://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/6c3897952c363a4c22712329d2ff2e93.css').text
# mty2pe{background:-180.0px -1664.0px;}
# 正则,这里有个坑,刚开始使用+拼接,不能匹配
str_css = r'%s{background:-(\d+).0px -(\d+).0px'% info
css_re = re.compile(str_css)
info_css = css_re.findall(css_html)
# print(css_html)
# print(str_css)
# print(info_css)
return info_css
输入:hkcc8 结果:475 64
接下来解析号码的url
<p>result = requests.get('https://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/d32298136aa6a4b7715bd2d11b41727c.svg')
tree = lxml.html.fromstring(result.content)
a = tree.xpath('//text[@y="41"]/text()')[0]
b = tree.xpath('//text[@y="88"]/text()')[0]
c = tree.xpath('//text[@y="126"]/text()')[0]
# x ,y 是得到的两个坐标点
# 调用上面的函数
x,y = css_info('hkcc8')[0]
x,y = int(x),int(y)
print('坐标',x,y)
if y