一、字体反爬

基于起点中文网案例介绍字体反扒

需求:https://www.qidian.com/rank/yuepiao/  获取起点中文网月票榜排名的书名极其月票数量

通过抓包可以在 “yuepiao/” 中发现我们所需要的书名和月票数量都是html格式的数据,所以我们要用到 lxml中 的 etree 方法,利用xpath进行解析

import requests
from lxml import etree
from fake_useragent import FakeUserAgentif __name__ == '__main__':# 1.确认目标的urlurl_ = 'https://www.qidian.com/rank/yuepiao/'# 2.构造请求头信息headers_ = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36','Cookie': 'e1=%7B%22pid%22%3A%22qd_P_rank_19%22%2C%22eid%22%3A%22%22%7D; e2=%7B%22pid%22%3A%22qd_P_rank_01%22%2C%22eid%22%3A%22qd_C45%22%2C%22l1%22%3A5%7D; e1=%7B%22pid%22%3A%22qd_P_rank_01%22%2C%22eid%22%3A%22qd_C45%22%2C%22l1%22%3A5%7D; e2=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A16%22%2C%22l1%22%3A3%7D; _csrfToken=FJAYOKmb5GpRuB6mdxwLXF1sDkKqgTL0z5gG7Ana; newstatisticUUID=1613732256_1917024121; _yep_uuid=adb684fd-87c1-4108-391c-f50ab9ac0d5c; _gid=GA1.2.180413774.1628410724; e1=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A16%22%2C%22l1%22%3A3%7D; e2=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22%22%7D; _ga_FZMMH98S83=GS1.1.1628410723.1.1.1628410744.0; _ga_PFYW0QLV3P=GS1.1.1628410723.1.1.1628410744.0; _ga=GA1.2.707336986.1628410723','Referer': 'https://www.qidian.com/rank/'}# 3.发送请求,获取相应response_ = requests.get(url_, headers=headers_)data_ = response_.text# 检查拿到的相应是否正确with open('qidian.html', 'w', encoding='utf-8') as f:f.write(data_)

需要注意的是:起点中文网是一个大网站,请求头信息尽量写完整,检查拿到的响应对象中是否包含我们需要的数据

经检查,我们所需要的数据在响应对象中,下一步就需要在响应对象中提取到所需要的数据,因为是html格式数据,所以提取数据的关键就是调试xpath语法,在提取前进行分析,一页有20本书,即提取结果也应该是20个

书名xpath://h4/a/text()

月票数量xpath://span/span/text() 或者 //span[@class="IuAmFihj"]/text()

注:第二种xpath语法在浏览器调试时可以取到数据,但是当我们在pycharm中运行程序时会发现并不能提取到相应数据,这是因为span的class属性值在每一次访问网站时都会发生变化

import requests
from lxml import etree
from fake_useragent import FakeUserAgentif __name__ == '__main__':# 1.确认目标的urlurl_ = 'https://www.qidian.com/rank/yuepiao/'# 2.构造请求头信息headers_ = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36','Cookie': 'e1=%7B%22pid%22%3A%22qd_P_rank_19%22%2C%22eid%22%3A%22%22%7D; e2=%7B%22pid%22%3A%22qd_P_rank_01%22%2C%22eid%22%3A%22qd_C45%22%2C%22l1%22%3A5%7D; e1=%7B%22pid%22%3A%22qd_P_rank_01%22%2C%22eid%22%3A%22qd_C45%22%2C%22l1%22%3A5%7D; e2=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A16%22%2C%22l1%22%3A3%7D; _csrfToken=FJAYOKmb5GpRuB6mdxwLXF1sDkKqgTL0z5gG7Ana; newstatisticUUID=1613732256_1917024121; _yep_uuid=adb684fd-87c1-4108-391c-f50ab9ac0d5c; _gid=GA1.2.180413774.1628410724; e1=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22qd_A16%22%2C%22l1%22%3A3%7D; e2=%7B%22pid%22%3A%22qd_p_qidian%22%2C%22eid%22%3A%22%22%7D; _ga_FZMMH98S83=GS1.1.1628410723.1.1.1628410744.0; _ga_PFYW0QLV3P=GS1.1.1628410723.1.1.1628410744.0; _ga=GA1.2.707336986.1628410723','Referer': 'https://www.qidian.com/rank/'}# 3.发送请求,获取相应response_ = requests.get(url_, headers=headers_)data_ = response_.text# # 检查拿到的相应是否正确# with open('qidian.html', 'w', encoding='utf-8') as f:#     f.write(data_)# 4.解析数据,获取书名和月票数量html_obj = etree.HTML(data_)book_list = html_obj.xpath('//h4/a/text()')num_list = html_obj.xpath('//span/span/text()')print(book_list)print(num_list)

通过正常流程,我们应该拿到了书名和月票数量,但是打印我们提取到的数据是会发现出现了下面情况

['夜的命名术', '不科学御兽', '我有一棵神话树', '我就是不按套路出牌', '从红月开始', '我的云养女友', '大梦主', '深空彼岸', '这个人仙太过正经', '斗罗大陆V重生唐三', '仙狐', '大奉打更人', '星门', '人族镇守使', '东晋北府一丘八', '我只能和S级女神谈恋爱', '我真不想看见bug', '稳住别浪', '赤心巡天', '全职艺术家']
['												

Python爬虫(第八周)相关推荐

  1. Python爬虫(第一周)

    目录 一.正则表达式 正则表达式的作用 正则表达式的使用 1.match函数 匹配单个字符(规范字符类型) 匹配多个字符(规范字符数量) 匹配开头和结尾 2.search函数 小案例 3.findal ...

  2. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语 ...

  3. 新农慕课python答案第八周_2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案...

    2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案 更多相关问题 前摄抑制和倒摄抑制现象可以作为证据支持某种遗忘理论,这一遗忘理论是A.衰退说B.干扰说C.压抑说D 2013年 ...

  4. python第八周项目_贪心学院Python训练营第八周-数据可视化

    写在最前面 正好最近在写论文,需要对语料库进行一些数据分析.所以也在琢磨着Python的一些关于数据可视化和数理统计分析方面的库. 学校里的论文数据分析指导课教我们的一般都是R.SPSS居多.很多人会 ...

  5. python爬虫统计上证指数周、月涨跌现象

    题目:统计2018年上证指数,在每周.每月周期中每天的涨跌情况 知识点分解: 1.抓取2018年全年的上证指数数据,元数据为{时间:指数},保存为csv格式 2.解析元数据中'时间'为星期属性,月属性 ...

  6. python人工智能pdf_床长人工智能教程pdf下载网校——Python爬虫实战八

    . 声明:本人只是分享一些床长人工智能教程相关的免费pdf下载文档而已,并非床长人工智能网校的收费文章.尊重版权,支持原创! 更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关 ...

  7. python免费教学视频400集-如何入门 Python 爬虫?400集免费教程视频带你从0-1全面掌握...

    学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础: ...

  8. python爬虫解析js_python爬虫解析js

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! location.href = localstorage.getitem(url ...

  9. Python爬虫学习系列教程

    大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...

  10. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

最新文章

  1. Spark集群启动时worker节点启不起来
  2. iOS 自定义 View
  3. 特征值与特征向量 matlab数值解,用MATLAB和numpy求解特征值和特征向量,matlab,与
  4. MySQL 打开federated存储引擎
  5. 软件测试工作常用linux命令,软件测试工程师工作中常用的Linux命令
  6. 海思芯片怎么使用tde给qt加速_3519移植Qt适配附件
  7. 【项目管理】人力资源计划和组建项目团队
  8. AD域中组织单位和组的区别
  9. BI报表系统在银行业的应用
  10. Ghost网络克隆详细步骤教程
  11. org.springframework.stereotype
  12. Hadoop学习之路(二十七)MapReduce的API使用(四)
  13. 理论综述与创新---结构洞的新应用
  14. CSS calc()函数的用法
  15. IT 生涯初探与工作经验分享【计算机、软件工程相关专业毕业生应该知道的事】---- 来自2008级学长的掏心窝分享
  16. 【Linux】动态库与静态库
  17. 中北大学朔州校区计算机科学与技术分数线,2020山西中北大学朔州校区研究生推免名额分配公示...
  18. 微软Surface系列产品详解
  19. MyBatis 入门 (二级缓存脏读)
  20. 麦哥个人简介及代码获取方式

热门文章

  1. 解决FMLE录制的f4v文件无法直接播放的问题
  2. Revit二次开发-【EG01】构件工程量提取
  3. 蓝牙enable的流程分析
  4. hibernate基础sessionFactory
  5. AutoJS4.1.0实战教程 ---火火视频极速版签到、清理缓存和自动评论
  6. Excel VBA 批量操作文件,FileSystemObject 方式,避免文件名中的奇怪字符
  7. 模拟退火算法解决工作指派问题(c++代码实现)
  8. 蓝牙技术|蓝牙的四种安全模式
  9. python a股行情_使用Python下载A股行情的几种方法
  10. 用宝付平台之前一定要了解清楚