css反爬 发表于 2019-04-26 | 分类于 spider | 阅读次数 普通css 不断变化的class属性带着诡异的样式,找到css样式的地方,按照class聚合起来,分析其中的规律(位移,显示与否),再解析 123456789101112131415161718192021222324252627282930313233def get_css(ele_txt): raw_css = map(lambda x: x.strip(), ele_txt.split('\n')) css_dict = defaultdict(dict) for r in raw_css: if r: class_, key, value = re.search(r'\.(\w*).*?{\s*?(.*?):(.*?)\s*}', r).groups() css_dict[class_.strip()][key.strip()] = value.strip() return css_dict def parse_css(i, r, css_dict, dis_dict): class_ = r['class'][0] value = r.get_text(strip=True) if class_ in css_dict: # content if not value and 'content' in css_dict[class_]: return True, 'append', int(css_dict[class_]['content'].replace('"', '')) # ignore if 'opacity' in css_dict[class_]: return True, 'ignore', None # 位移 if 'left' in css_dict[class_]: displacement = int(re.search(r'(.*?)em', css_dict[class_]['left']).group(1)) dis_dict[i + displacement] = value return True, 'index', None # 不动 else: dis_dict[i] = value return True, 'index', None return False, None, None 最难是找到css样式的地方,可以是js生成的(加密),放在css里面,放在html里面 本文作者: wyx 本文链接: http://www.wyx.cloudns.asia/blog/2019/04/26/css 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!