1 """

2 起点中文网,在“数字”上设置了文字反爬,使用了自定义的文字文件ttf3 浏览器渲染不出来,但是可以在网页源代码中找到映射后的数字4 正则爬的是网页源代码 xpath是默认utf-8解析网页数据;网页源代码有数据,使用浏览器"检查"是方框,用xpath爬出来的也是方框5 以小说《斗罗大陆》为例 https://book.qidian.com/info/11152776 """

7 importrequests, time, re, pprint8 from fontTools.ttLib importTTFont9 from io importBytesIO10 from lxml importetree11

12 #此代码使用bs和xpath均无法爬出,需使用正则匹配

13 #selector = etree.HTML(html_data.text)

14 #word1 = selector.xpath('//div[2]/div[6]/div[1]/div[2]/p[3]/em[1]/span/text()')

15

16 defget_font(url):17 """

18 获取源代码中数字信息与英文单词之间的映射关系19 :param url: 网页源代码中的字体地址20 :return: 网页字体映射关系21 """

22 time.sleep(1)23 response =requests.get(url)24 font =TTFont(BytesIO(response.content))25 web_font_relation =font.getBestCmap()26 font.close()27 returnweb_font_relation28

29

30 #在fontcreator中查看此ttf文件中英文单词与阿拉伯数字的映射关系,写入字典

31 python_font_relation ={32 'one':1,33 'two':2,34 'three':3,35 'four':4,36 'five':5,37 'six':6,38 'seven':7,39 'eight':8,40 'nine':9,41 'zero':0,42 'period':'.'

43 }44

45 defget_html_info(url):46 """

47 解析网页,获取文字文件的地址和需要解码的数字信息48 :param url: 需要解析的网页地址49 :return: 文字文件ttf的地址50 反爬的数字,一维列表51 """

52 headers ={53 'User-Agent': 'User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

54 }55 html_data = requests.get(url, headers=headers)56 #获取网页的文字ttf文件的地址

57 url_ttf_pattern = re.compile('',re.S)58 fonturl =re.findall(url_ttf_pattern,html_data.text)[0]59 url_ttf = re.search('woff.*?url.*?\'(.+?)\'.*?truetype', fonturl).group(1)60

61 #获取所有反爬的数字

62 word_pattern = re.compile('(.*?)', re.S)#制定正则匹配规则,匹配所有标签中的内容

63 numberlist =re.findall(word_pattern, html_data.text)64

65 returnurl_ttf,numberlist66

67

68 defget_encode_font(numberlist):69 """

70 把源代码中的数字信息进行2次解码71 :param numberlist: 需要解码的一维数字信息72 :return:73 """

74 data =[]75 for i innumberlist:76 fanpa_data = ''

77 index_i =numberlist.index(i)78 words = i.split(';')79 #print('words:',words)

80 for k in range(0,len(words)-1):81 words[k] = words[k].strip('')82 #print(words[k])

83 words[k] =str(python_font_relation[web_font_relation[int(words[k])]])84 #print(words[k])

85 fanpa_data +=words[k]86 #print(fanpa_data)

87 data.append(fanpa_data)88 print(data[0],'万字')89 print(data[1], '万阅文总点击')90 print(data[2], '万会员周点击')91 print(data[3], '万总推荐')92 print(data[4], '万周推荐')93 #return data

94

95 """程序主入口"""

96 if __name__=='__main__':97 url = 'https://book.qidian.com/info/1115277' #选取某一小说

98 get_html_info(url)99 web_font_relation =get_font(get_html_info(url)[0])100 pprint.pprint(web_font_relation)#格式化打印网页文字映射关系

101 get_encode_font(get_html_info(url)[1])

python爬取起点中文网_Python3爬取起点中文网阅读量信息,解决文字反爬~~~附源代码...相关推荐

  1. Go爬取起点中文网 解决文字反爬

    Go语言的爬虫库不如Python强大,却也五脏俱全. 今天我们分析如何爬取起点中文网数据,以及遇到反爬如何处理. 作品链接:http://www.365yg.com/i6678092837810078 ...

  2. python爬取电影票房前50_Python3爬取起猫眼电影实时票房信息,解决文字反爬~~~附源代码...

    上文解决了起点中文网部分数字反爬的信息,详细链接https://www.cnblogs.com/aby321/p/10214123.html 本文研究另一种文字反爬的机制--猫眼电影实时票房反爬 虽然 ...

  3. 【机器学习】KNN算法及其用KNN解决字体反爬

    KNN算法及其用KNN解决字体反爬 关于KNN算法 概要 简介 原理 KNN算法Python实现 KNN解决字体反爬 web-font介绍 例子 最后 关于KNN算法 概要 K最近邻(kNN,k-Ne ...

  4. 大众点评数据信息获取——字体反爬

    大众点评数据信息获取--字体反爬 大众点评的字体反爬算是比较常见的,这次来学习一下相关字体反爬的技巧 以店铺的评论页面和店铺列表页面进行研究,分别对应了css字体映射,woff字体加密的反爬虫手段. ...

  5. pythonttf字体反爬虫_利用Python采集起点中文网小说,并解决字体反爬的问题

    个人比较喜欢看小说,于是乎想利用Python爬取小说网站--起点中文网,在Python编程爬取定位过程中遇到了Python反爬虫,咨询了我旁边的前端大神,说下方法 当前页面接口返回的html源码 当前 ...

  6. python爬取csdn上的包含整人关键词的阅读量并且存入表格里。完整代码

    请注意,爬取他人网站的数据可能违反网站的条款和条件.在进行爬虫操作之前,请确保获得网站的授权. 下面是一个使用 Python 爬取 CSDN 上所有包含 "整人" 关键词文章的阅读 ...

  7. 爬虫 — 大众点评商户信息的爬取和文字反爬

    信息爬取 import requests from lxml import etree import time import json import pandas as pd# 获取商户名称和ID r ...

  8. 【Python爬虫实例】Python解决521反爬方案

    参考文献:https://github.com/xiantang/Spider/blob/master/Anti_Anti_Spider_521/pass_521.py 写在前面的话:Python在爬 ...

  9. python爬虫进阶-汽车之家贴吧信息(字体反爬-动态映射)

    目的 获取汽车之家贴吧的内容信息 详细需求 汽车之家贴吧 思路解析 一.F12获取目标信息-进行分析 二.字体反爬解析-根据上一篇的文章,直接搜索关键词就好 三 根据其后的链接,保存为ttf在本地,查 ...

  10. python爬虫笔记五:汽车之家贴吧信息(字体反爬-动态映射)

    学习网址: https://jia666666.blog.csdn.net/article/details/108974149 ----------------------------------- ...

最新文章

  1. sql 分号变成多行_SQL(2)
  2. ISME:宿主性别可以决定肠道微生物对寄生虫感染的响应
  3. 关于使用“JS获取屏幕,浏览器,网页高度宽度”的个人思考
  4. register_chrdev深入分析
  5. 计算机二级办公室软件应用选择题,计算机二级,办公软件高级应用技术有没有选择题和判断题的...
  6. Mind Control CodeForces - 1291C(思维)
  7. Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解...
  8. 【HDU5156】Harry and Christmas tree,两种离线的做法
  9. html横向导入word
  10. 导入项目后资源文件乱码---eclipse插件properties Editor安装
  11. 数据库的varchar长度的限制以及对性能是否有影响
  12. android Google Advertising ID 如何重置
  13. 收集五款常用的HTML编辑软件
  14. Xshell7 和 Xftp7 免费下载安装
  15. Prometheus metric
  16. 【GIF图片】用PS生成背景透明的GIF图片出现帧叠加的现象
  17. 图片切换马赛克动画效果
  18. 基于PT8.2汽车尾气C0监测及联动控制
  19. Java工程师的工资待遇如何?
  20. java 连接 websphere_本地java类访问websphere的JNDI

热门文章

  1. 一个神奇的大学科目《软件工程》,知识点总结+测试题,包你不挂科
  2. 宝塔面板 使用supervisor守护队列
  3. i219v微星 驱动_MSI微星
  4. 关于在页面提交后reset按钮就不起作用的问题
  5. Python算法——查找数组前三名
  6. 路由器2.4G和5G有什么区别
  7. 网课题库接口搭建步骤
  8. 第三方网站接入秀米,实现秀米编辑的文章同步到自己的网站平台
  9. 3行Python 代码实现图片压缩
  10. 10068---谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法