一、分析网页
1、要爬取的内容在网页源码中渲染2、要爬取的内容部分是乱码,显然是做了反爬3、找到字体文件4、用字体文件软件打开5、用python将字体文件保存成xml格式的文件,并读取里面的内容得到对应的内容6、找到字体文件中的文字对应的编码和爬取内容中的编码对应关系进行替换7、将爬取内容中的乱码部分一次替换成对应的文字
二、程序
import requestsfrom lxml import etreefrom fontTools.ttLib import TTFont# 发送请求 获取源码url = 'https://club.autohome.com.cn/bbs/thread/665330b6c7146767/80787515-1.html'header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36'}res_obj = requests.get(url, headers=header)# 解析数据tree = etree.HTML(res_obj.text)contents = tree.xpath('//div[@class="tz-paragraph"]//text()')auto_font = TTFont('wKgHGFsUz1yAMsAiAABj8AQLwg890..ttf')# auto_font.saveXML('auto.xml') # 将字体文件保存成xml格式# 源码:\uedb8# 字体文件中:uniEDB8new_font_list = []font_list = auto_font.getGlyphOrder()# [1:] 过滤列表中的第一个元素for font in font_list[1:]: new_font = r'"\u' + font[3:] + '"' new_font = eval(new_font) new_font_list.append(new_font)# word_list 是提前写好word_list = ['十','远','很','一','高','九','得','坏','少','右','呢','五','长','八','和','好','低','七','了','矮','左','三','二','近','四','不','短','上','下','大','是','的','地','小','着','六','多','更']# 替换处理content_str = ''.join(contents)# 通过下标索引进行替换for i in range(len(word_list)): content_str = content_str.replace(new_font_list[i], word_list[i])print(content_str)