正则
在字体反爬过程中,解析页面时,使用正则表达式可以匹配到网页源码中的字体代码,如下所示:
print(re.findall(r'<span class="day font".*?>(.*?)</span>', rsp.text)[0]) # 结果:/天
Xpath
而使用xpath解析,得到的却是Unicode字符串列表:
html = etree.HTML(rsp.text)
res = html.xpath('//span[@class="day font"]/text()') # ['\ue412\uf359\uf359/天']
遍历结果为乱码:
print(res[0]) # 结果:/天
bs4
使用bs4解析,输出的也是乱码,如下所示:
soup = BeautifulSoup(rsp.text, 'lxml')
sal = soup.select('span.day.font') # [<span class="day font" data-v-98c756d6="">/天</span>]
print(sal[0].text) # 结果:/天
若在bs4下继续使用正则匹配,匹配结果也是Unicode字符串列表,遍历输出也是乱码
那么问题来了:请问,都是从源代码中解析,为什么后两种解析方式得到的是Unicode而得不到字体代码啊?