Python爬虫(第八周)
一、字体反爬
基于起点中文网案例介绍字体反扒
需求: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爬虫(第八周)相关推荐
- Python爬虫(第一周)
目录 一.正则表达式 正则表达式的作用 正则表达式的使用 1.match函数 匹配单个字符(规范字符类型) 匹配多个字符(规范字符数量) 匹配开头和结尾 2.search函数 小案例 3.findal ...
- Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺
其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语 ...
- 新农慕课python答案第八周_2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案...
2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案 更多相关问题 前摄抑制和倒摄抑制现象可以作为证据支持某种遗忘理论,这一遗忘理论是A.衰退说B.干扰说C.压抑说D 2013年 ...
- python第八周项目_贪心学院Python训练营第八周-数据可视化
写在最前面 正好最近在写论文,需要对语料库进行一些数据分析.所以也在琢磨着Python的一些关于数据可视化和数理统计分析方面的库. 学校里的论文数据分析指导课教我们的一般都是R.SPSS居多.很多人会 ...
- python爬虫统计上证指数周、月涨跌现象
题目:统计2018年上证指数,在每周.每月周期中每天的涨跌情况 知识点分解: 1.抓取2018年全年的上证指数数据,元数据为{时间:指数},保存为csv格式 2.解析元数据中'时间'为星期属性,月属性 ...
- python人工智能pdf_床长人工智能教程pdf下载网校——Python爬虫实战八
. 声明:本人只是分享一些床长人工智能教程相关的免费pdf下载文档而已,并非床长人工智能网校的收费文章.尊重版权,支持原创! 更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关 ...
- python免费教学视频400集-如何入门 Python 爬虫?400集免费教程视频带你从0-1全面掌握...
学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础: ...
- python爬虫解析js_python爬虫解析js
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! location.href = localstorage.getitem(url ...
- Python爬虫学习系列教程
大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...
- Python爬虫学习系列教程-----------爬虫系列 你值的收藏
静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...
最新文章
- Spark集群启动时worker节点启不起来
- iOS 自定义 View
- 特征值与特征向量 matlab数值解,用MATLAB和numpy求解特征值和特征向量,matlab,与
- MySQL 打开federated存储引擎
- 软件测试工作常用linux命令,软件测试工程师工作中常用的Linux命令
- 海思芯片怎么使用tde给qt加速_3519移植Qt适配附件
- 【项目管理】人力资源计划和组建项目团队
- AD域中组织单位和组的区别
- BI报表系统在银行业的应用
- Ghost网络克隆详细步骤教程
- org.springframework.stereotype
- Hadoop学习之路(二十七)MapReduce的API使用(四)
- 理论综述与创新---结构洞的新应用
- CSS calc()函数的用法
- IT 生涯初探与工作经验分享【计算机、软件工程相关专业毕业生应该知道的事】---- 来自2008级学长的掏心窝分享
- 【Linux】动态库与静态库
- 中北大学朔州校区计算机科学与技术分数线,2020山西中北大学朔州校区研究生推免名额分配公示...
- 微软Surface系列产品详解
- MyBatis 入门 (二级缓存脏读)
- 麦哥个人简介及代码获取方式
热门文章