Loading... <div class="panel panel-default box-shadow-wrap-lg goal-panel"> <div class="panel-heading"> 进度 </div> <div class="list-group"> <div class="list-group-item"> <p class="goal_name"> 文章更新进度:</p> <div class="progress-striped active m-b-sm progress" value="dynamic" type="danger"> <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="97" aria-valuemin="0" aria-valuemax="100" style="width: 100%;"><span> 100% </span></div> </div> <p class="goal_name"> 代码更新进度:</p> <div class="progress-striped active m-b-sm progress" value="dynamic" type="danger"> <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="97" aria-valuemin="0" aria-valuemax="100" style="width: 100%;"><span> 100% </span></div> </div></div></div></div> ## 安装环境 直接上手python,安装环境。 单走爬虫就直接用官方的python 如果还要曲线往数据科学发展的,直接anaconda,不要有任何犹豫 ## 编辑器选择 我去,小孩子才特么会选择,你把你电脑里面的“资源”删点不行么? pycharm本人不咋推荐,后期慢的狠,我在写这篇文章时,大多碰到的都是用vscode或者是官方idle(或者vim) 当然!jupyter或jupyterlab也是一种不错的选择! 编辑器下载:直接百度该编辑器,通过官网下载是最明智的选择 由于主要是引导篇,介绍编辑器的工作就交给屏幕面前的你了,要多多百度! ## 包的选择 requests:基于urllib,你单走他,入门会非常快。大多数爬虫可以靠他完成 json:解析json数据包的时候用用。主要用它的两个方法就ok了 bs4 (BeautifulSoup):又名甲鱼汤,善于标签取值,如果你在把他和正则比较。。。啧啧,完全没有必要,甲鱼汤写的比较少,正则入门对于你太吃力了,但是又面临着后期必须学那么一点点的问题,我个人建议是先把bs4入门了,再去正则,毕竟目前网页给看的都是标签或者数据包一样的。。 re:见上面,正则库,引导篇介绍这个就太费了,靠百度自学! 正则表达式也不是处处都要用正则,甲鱼汤也不是处处都要用甲鱼汤,两者基本上会相差几十毫秒的差距吧! what will be will be! selenium:他需要一个配套的浏览器和一个浏览器驱动,本人建议是用chrome和phantomjs(基于webkit) 很多人说他并发差,确实,但是多进程和分布式是可以解决的,linux机子用phantomjs(基于webkit的无头浏览器) ## 快速入门 本人推荐用requests,因为requests的api更加符合python风格,并且在py2和py3都适用 具体可以通过百度或者下面这篇文章: [https://www.cnblogs.com/QaStudy/p/11514965.html](https://www.cnblogs.com/QaStudy/p/11514965.html "https://www.cnblogs.com/QaStudy/p/11514965.html") requets官方文档: [https://docs.python-requests.org/zh_CN/latest/](https://docs.python-requests.org/zh_CN/latest/ "https://docs.python-requests.org/zh_CN/latest/") ### BeautifulSoup <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-f9168ea825456276c44f224bd54833eb41" aria-expanded="true"><div class="accordion-toggle"><span style="">甲鱼汤文档</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-f9168ea825456276c44f224bd54833eb41" class="collapse collapse-content"><p></p> <button class=" btn m-b-xs btn-info " onclick="window.open('https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/','_blank')">官方文档</button> <button class=" btn m-b-xs btn-dark " onclick="window.open('https://blog.csdn.net/xiu_star/article/details/70157924','_blank')">csdn社区简易入门文章</button> <button class=" btn m-b-xs btn-success " onclick="window.open('https://zhuanlan.zhihu.com/p/234302663','_blank')">知乎甲鱼汤入门篇</button> <p></p></div></div></div> #### 甲鱼汤优势 甲鱼汤的速度比较慢但是容错率很好,因为python本身其实占用内存高,人们往往希望通过高效的代码形式,来削弱python造成的不堪重负的影响,你如果会c,尽量结合底层语言。 我的建议是,你可以先用甲鱼汤进行标签取值,之后后续升级你的代码,再尝试使用正则表达式,提高你的效率 当然,如果你在之前已经有了充分的正则表达式基础,乜可以直接使用正则表达式 #### 甲鱼汤快速入门事例 <div class="tab-container post_tab box-shadow-wrap-lg"> <ul class="nav no-padder b-b scroll-hide" role="tablist"> <li class='nav-item active' role="presentation"><a class='nav-link active' style="" data-toggle="tab" aria-controls='tabs-680f1e65efab4c7e9228503116d1eebf760' role="tab" data-target='#tabs-680f1e65efab4c7e9228503116d1eebf760'>获取本博客第一页文章标题</a></li><li class='nav-item ' role="presentation"><a class='nav-link ' style="" data-toggle="tab" aria-controls='tabs-d04cf30253e64cffe1cb186692556d55951' role="tab" data-target='#tabs-d04cf30253e64cffe1cb186692556d55951'>ua反爬</a></li> </ul> <div class="tab-content no-border"> <div role="tabpanel" id='tabs-680f1e65efab4c7e9228503116d1eebf760' class="tab-pane fade active in"> 演示代码是获取第一页的所有标题(因为访问次数超过阈值会启动c盾单页) ##### 导入模块 ```python from bs4 import BeautifulSoup import requests ``` ##### 发起请求,解析返回数据为甲鱼汤 ```python r = requests.get('http://blog.a152.top') soup = BeautifulSoup(r.text) #由于默认使用的是lxml。可以把这个安装了,容错率高 #不想安装可以用这个 soup = BeautifulSoup(r.text,'html.parser') ``` ##### 提取数据 使用列表推到式比使用for快 ```python print([i.text for i in soup.find_all('h2')]) ``` ##### 输出结果 ```python ['pubg 四指操作小记', '爬虫入门教程-引导篇', 'chrome小游戏', '光伏数据处理', '时序数据思路', '个人日记-2021-10-11 -- 2021-10-24', '为layui树立“墓碑”', '既然所有的生命都要死亡,那么生命的意义是什么?', '爬取joe主题文章', '百度提交助手-py脚本'] ``` ##### 获取文章的地址 通过观察网页结构发现,通过h2我们已经get到了文章的连接,所以,a标签是h2标签的子标签 ```python print([i.find('a')['href'] for i in soup.find_all('h2')]) ``` ```python ['http://blog.a152.top/260.html', 'http://blog.a152.top/259.html', 'http://blog.a152.top/257.html', 'http://blog.a152.top/245.html', 'http://blog.a152.top/244.html', 'http://blog.a152.top/243.html', 'http://blog.a152.top/242.html', 'http://blog.a152.top/239.html', 'http://blog.a152.top/235.html', 'http://blog.a152.top/229.html'] ``` </div><div role="tabpanel" id='tabs-d04cf30253e64cffe1cb186692556d55951' class="tab-pane fade "> ### 详细的反爬将会有新的一篇介绍 本篇仅为引导篇 #### 正常操作 导入包 ```python from bs4 import BeautifulSoup import requests ``` #### 建立一个ua值 User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 实际上,ua基本上不会被封杀。基本上是杀敌一千自损八百。就是看看是哪方面请求,基本上可以屏蔽一些无脑爬虫‘’ ```pyrthon head = {'user-agent':"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"} r = requests.get('http://www.porters.vip/verify/uas/index.html',headers=head) ``` #### 之后就可以正常获取了 ```python soup = BeautifulSoup(r.text) li=soup.find_all('div','media-list') t=[i.find('h4').text for i in li] c=[i.find('p').text for i in li] ``` #### 查看一下 ```python t为 ['中牟县晨阳路学校:中牟县小学学业质量分析会在晨阳路学校举行', '春暖花开时,人间四月天,四月天小学欢迎您', '安阳市北关区教育局依托腾讯智慧校园开展提升教师信息化素养工作', '学习雷锋精神,争做美德少年。建设路小学学雷锋活动刷爆班级圈', '沙溪中学召开2019年春综治安全、文明创卫、后勤保障专题工作', '贵州经贸职业技术学院学习雷锋系列活动正式启动', '郑州市教育局对我校道德课堂建设进行检查验收', '宝鸡市中小学规范汉字书写大赛落下帷幕,渭滨中学再次获奖'] c为 ['3月7日上午,中牟县2018——2019学年上学期中小学学业质量分析会在中牟县晨阳路学校报告厅举行,中牟县教体局局长王国恩、副局长张青梅等领导参加会议,全县各乡镇中心校校长、县直各小学校长及业务副校长、教务主任及全体教研员参加会议,会议由教育科科长陈魁主持。', '春回大地,百花盛开,四月天是一个充满暖意的浪漫的名字。四月天小学位于郑州市金水区国基路,学校成立于2011年,是全国学校体育联盟实验学校、全国新教育实验学校,郑州市“行知行”创客联盟学校。', '安阳市北关区教育局高度重视教育信息化建设工作,在申报确定为河南省电化教育馆“腾讯智慧校园“试点区以来,积极推进试点工作。目前,试点已经取得阶段性明显成效,北关区教育局腾讯智慧校园综合管理平台已经开通使用,所有试点校全部开通使用并取得了良好的应用效果。', '这个春天是毛主席等老一辈革命家发出向雷锋学习56周年,在郑州市的一所小学里,一群一年级的孩子,用自己的点滴善行刷爆了班级圈,温暖了整个春天。', '2019年3月8日星期五上午,沙溪中学大会议室召开了2019年春综治安全、文明创卫、后勤保障专题工作会。郑军校长、王良峰校长以及各相关部门负责人参与会议。', '“青春啊,永远是美好的,可是真正的青春,只属于这些力争上游的人,永远忘我劳动的人,永远谦虚的人。” 今天是毛泽东题词“向雷锋同志学习” 56周年。', '郑州市教育局道德课堂验收组在我市教科研培训中心副主任李振全的陪同下莅临我校,检查验收道德课堂建设,王秋萍校长等学校领导参加。', '第四届陕西省规范汉字书写大赛宝鸡市选拔赛在宝鸡市高新二小落下帷幕,我校再次代表渭滨区参加比赛,并获高中组三等奖。'] ``` </div> </div> </div> ### selenium Last modification:June 2, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的内容对你有用,请随意赞赏