前言

下一篇是使用requests和re模块爬取某个学习站点的所有用户头像.

最近在刷i春秋论坛的帖子,发现论坛首页每天都会推送一些精品文章,但是有时候好几天也没有更新首页的推送,总不能每天都去刷新吧。所以有了这个脚本或称之为小爬虫(如果它能被称为爬虫的话),去爬取精品文章的标题,链接以及简介。

正文

需要看懂这个脚本大概需要学会简单的正则表达式,requests模块和re模块的基本使用,如果不会请自行学习。大佬绕行。

第一步是爬取整个首页,分析源代码,这一步需要需要到requests模块,当然其他的模块可能也是可以的。

import requestsurl = "https://bbs.ichunqiu.com/portal.php"
headers = {'Host': 'bbs.ichunqiu.com','Connection': 'close','Cache-Control': 'max-age=0','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/67.0.3396.99 Chrome/67.0.3396.99 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8',}
def get_html(url, headers):response = requests.get(url=url, headers=headers, timeout=5)html = response.contentreturn html.decode("utf-8")if __name__ == '__main__':html = get_html(url, headers)print(html)

在返回的源代码中发现每一篇精品文章的的大概在这几个标签之间

<h3 class="clr" style="width: 100%; float: left;"><a href="https://bbs.ichunqiu.com/thread-47215-1-1.html" target="blank" class="ui_colorG" style="color: #555555;">一键安装藏隐患,phpStudy 批量入侵的分析与溯源</a></h3><p class="cdg ovh" style="width: 100%; float: left; color: #999999;margin-bottom: 28px;">一、前言近日,腾讯安全云鼎实验室监测到大量主机被入侵并添加了一个名为“vusr_dx$”的隐藏帐号;同时,云鼎实验室还监测到此类帐号被大量创建的同时存在对应...</p>

以这篇文章为例,文章的名称在这个a标签之间

<a href="https://bbs.ichunqiu.com/thread-47215-1-1.html" target="blank" class="ui_colorG" style="color: #555555;">一键安装藏隐患,phpStudy 批量入侵的分析与溯源</a>

但是每篇文章的url是改变的,所以为了方便,我选取的范围是

target="blank" class="ui_colorG" style="color: #555555;">这个文章的标题</a>

同样的道理,每一篇精品文章的url在这个范围中间

<h3 class="clr" style="width: 100%; float: left;"><a href="这个文章的url" target="blank" class="ui_colorG" style="color: #555555;">

简介在这个范围中间

<p class="cdg ovh" style="width: 100%; float: left; color: #999999;margin-bottom: 28px;">这个是文章的简介</p>

到现在位置我们已经确定了我们需要爬取的三个的具体位置,接着就可以使用正则表达式去匹配。下面是完整的匹配的代码

url = "https://bbs.ichunqiu.com/portal.php"
headers = {'Host': 'bbs.ichunqiu.com','Connection': 'close','Cache-Control': 'max-age=0','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/67.0.3396.99 Chrome/67.0.3396.99 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8',}
re_title = 'target="blank" class="ui_colorG" style="color: #555555;">(.+?)</a></h3>'
re_url = '<h3 class="clr" style="width: 100%; float: left;"><a href="(.+?)" target="blank" class="ui_colorG" style="color: #555555;">'
re_overview = '<p class="cdg ovh" style="width: 100%; float: left; color: #999999;margin-bottom: 28px;">(.+?)</p>'def get_html(url, headers, re_title, re_url, re_overview):'''返回i春秋bbs的精品文章对应的一个元祖(标题,链接,简介)'''try:response = requests.get(url=url, headers=headers, timeout=5)html = response.contenttitles = re.findall(re_title, html.decode("utf-8"))urls = re.findall(re_url, html.decode("utf-8"))overviews = re.findall(re_overview, html.decode("utf-8"))except Exception as e:print(e)return titles, urls, overviewsif __name__ == '__main__':html = get_html(url, headers, re_title, re_url, re_overview)print(html)

在上面的脚本中,需要正则表达式匹配的一共有三个参数,以文章的标题为例子

'target="blank" class="ui_colorG" style="color: #555555;">(.+?)</a></h3>'

以非贪婪模块(?)匹配target="blank" class="ui_colorG" style="color: #555555;"></a></h3>之间的除了换行符的所以字符包括中文(.)至少一次(+)。

脚本运行的最后的结果:

(['#如果预算没有上限,你会如何配置你的电脑和办公环境#', 'XBash系列病毒样本分析报告', '安全报告 | 2018年游戏行业安全监测报告及五大攻击趋势', '基于Docker搭建Jumpserver堡垒机操作实践', '从SQL注入到内网漫游', '一键安装藏隐患,phpStudy 批量入侵的分析与溯源', '记一次对`vulnhub`中`Android4`靶机渗透测试全过程', '记一份SQLmap使用手册小结(一)', '记一份SQLmap使用手册小结(二)', 'CTF编码全家桶', 'Vegile-加壳幽灵', 'jQuery-File-Upload &lt;= 9.x 远程命令执行漏洞 (ImageMagick/Ghos', 'i春秋月刊第六期—Linux pwn零基础入门教程全套', 'Android逆向之动态分析Frida篇', '#若你已财务自由,赚取到足够的钱,你还会做网络安全吗?#', '安全报告 | 从恶意流量看2018十大互联网安全趋势', 'Pbootcmsv1.2.1前台存在sql注入', '【震惊】一个白帽子居然在网吧做出这种事', 'Pbootcmsv1.1.9前台存在sql注入', '安全运维中基线检查的自动化之ansible工具巧用', 'HASH函数烧脑大作战', '安全运维中基线检查的自动化', '利用python完成大学刷课(从0到完成的思路)', '浅谈内存取证', 'CTF中文件包含的一些技巧', '堆入门的必备基础知识', 'Metinfo 6.1.2 SQL注入', 'TheDAO悲剧重演,SpankChain重入漏洞分析', 'PHPMyWind v5.5 审计记录', '#自学网络安全有多难#', '【高奖励标准】腾讯云&amp;i春秋2018年度众测大赛,稳住,你们能赢!', 'EmpireCMS_V7.5的一次审计', '事件分析 | 门罗币挖矿新家族「罗生门」', 'Glibc堆块的向前向后合并与unlink原理机制探究', '程式舞曲后台getshell', '通过代码审计找出网站中的XSS漏洞实战(三)', '看我是如何利用升级系统一键GetShell', '通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二)', '利用缓存技术系列-Stack Canaries', '栈溢出中64位程序的处理方法', 'MD5哈希注入的两种方式', '#有哪些值得关注的网络安全团队?#', '事件分析 | 一起攻击者利用 Redis 未授权访问漏洞进行新型入侵挖', '【忍无可忍】揭秘一个专门针对学生家长下手的诈骗团伙', '百度安全应急响应中心【Backer Talk】-寻找能文能武的你!', 'BAT3联合主办 首届“天府杯”国际网络安全大赛即将开赛', '一个有趣的漏洞', 'pwnable.kr详细通关秘籍(二)', '从虚拟机架构到编译器实现', '5倍赏金拿好,少年,去屠龙!', 'i春秋作家、SRC英雄榜前列“鱼蛋”师父的直播课录屏+PPT', '在SAML接口中检测和利用XXE', '隔壁小孩都要知道的Drupal配置', '最新semcms 0day挖掘教程', '记一次实战渗透过程中的知识点总结', 'PbootCMS前台无限制SQL注入', '一个xss漏洞到内网漫游', 'Bluecms一处经典注入', 'POSCMS v3.2.0(免费版)前台无限制Getshell', 'AWD流量混淆之道', 'noxCTF部分writeup(欢迎吐槽QAQ)', '#网络安全行业学历VS技术哪个更重要?#', 'ECShop全系列版本远程代码执行高危漏洞分析+实战提权', 'pwnable.kr详细通关秘籍(一)', 'Cobaltstrike、armitage联动'], ['https://bbs.ichunqiu.com/thread-47466-1-1.html', 'https://bbs.ichunqiu.com/thread-47475-1-1.html', 'https://bbs.ichunqiu.com/thread-47414-1-1.html', 'https://bbs.ichunqiu.com/thread-47365-1-1.html', 'https://bbs.ichunqiu.com/thread-47220-1-1.html', 'https://bbs.ichunqiu.com/thread-47215-1-1.html', 'https://bbs.ichunqiu.com/thread-47181-1-1.html', 'https://bbs.ichunqiu.com/thread-47179-1-1.html', 'https://bbs.ichunqiu.com/thread-47180-1-1.html', 'https://bbs.ichunqiu.com/thread-47172-1-1.html', 'https://bbs.ichunqiu.com/thread-47137-1-1.html', 'https://bbs.ichunqiu.com/thread-47136-1-1.html', 'https://bbs.ichunqiu.com/thread-47090-1-1.html', 'https://bbs.ichunqiu.com/thread-47060-1-1.html', 'https://bbs.ichunqiu.com/thread-46943-1-1.html', 'https://bbs.ichunqiu.com/thread-46970-1-1.html', 'https://bbs.ichunqiu.com/thread-46976-1-1.html', 'https://bbs.ichunqiu.com/thread-46932-1-1.html', 'https://bbs.ichunqiu.com/thread-46897-1-1.html', 'https://bbs.ichunqiu.com/thread-46896-1-1.html', 'https://bbs.ichunqiu.com/thread-46895-1-1.html', 'https://bbs.ichunqiu.com/thread-46894-1-1.html', 'https://bbs.ichunqiu.com/thread-46865-1-1.html', 'https://bbs.ichunqiu.com/thread-46827-1-1.html', 'https://bbs.ichunqiu.com/thread-46790-1-1.html', 'https://bbs.ichunqiu.com/thread-46714-1-1.html', 'https://bbs.ichunqiu.com/thread-46687-1-1.html', 'https://bbs.ichunqiu.com/thread-46704-1-1.html', 'https://bbs.ichunqiu.com/thread-46703-1-1.html', 'https://bbs.ichunqiu.com/thread-46695-1-1.html', 'https://bbs.ichunqiu.com/thread-45918-1-1.html', 'https://bbs.ichunqiu.com/thread-46685-1-1.html', 'https://bbs.ichunqiu.com/thread-46644-1-1.html', 'https://bbs.ichunqiu.com/thread-46614-1-1.html', 'https://bbs.ichunqiu.com/thread-46634-1-1.html', 'https://bbs.ichunqiu.com/thread-46633-1-1.html', 'https://bbs.ichunqiu.com/thread-46603-1-1.html', 'https://bbs.ichunqiu.com/thread-46594-1-1.html', 'https://bbs.ichunqiu.com/thread-46409-1-1.html', 'https://bbs.ichunqiu.com/thread-46410-1-1.html', 'https://bbs.ichunqiu.com/thread-46567-1-1.html', 'https://bbs.ichunqiu.com/thread-46423-1-1.html', 'https://bbs.ichunqiu.com/thread-46354-1-1.html', 'https://bbs.ichunqiu.com/thread-46370-1-1.html', 'https://bbs.ichunqiu.com/thread-46322-1-1.html', 'https://bbs.ichunqiu.com/thread-46321-1-1.html', 'https://bbs.ichunqiu.com/thread-46282-1-1.html', 'https://bbs.ichunqiu.com/thread-46250-1-1.html', 'https://bbs.ichunqiu.com/thread-46283-1-1.html', 'https://bbs.ichunqiu.com/thread-46260-1-1.html', 'https://bbs.ichunqiu.com/thread-46249-1-1.html', 'https://bbs.ichunqiu.com/thread-46131-1-1.html', 'https://bbs.ichunqiu.com/thread-46127-1-1.html', 'https://bbs.ichunqiu.com/thread-46149-1-1.html', 'https://bbs.ichunqiu.com/thread-46121-1-1.html', 'https://bbs.ichunqiu.com/thread-46172-1-1.html', 'https://bbs.ichunqiu.com/thread-46068-1-1.html', 'https://bbs.ichunqiu.com/thread-46100-1-1.html', 'https://bbs.ichunqiu.com/thread-46060-1-1.html', 'https://bbs.ichunqiu.com/thread-46072-1-1.html', 'https://bbs.ichunqiu.com/thread-46059-1-1.html', 'https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=46069&page=1&extra=#pid509804', 'https://bbs.ichunqiu.com/thread-46029-1-1.html', 'https://bbs.ichunqiu.com/thread-46026-1-1.html', 'https://bbs.ichunqiu.com/thread-44203-1-1.html'], ['古人说“工欲善其事必先利其器”作为免不了要和电子设备办公环境打交道的我们,很多人心中都有一套自己的顶配设备,奈何受限于钱包里的小钱钱,一时半会儿没购置...', '这次分析的样本是我去某公司面试时,他们给的一堆样本,让我分析一下,分析报告给他们了,回音却没了。。。该系列是Iron Group组织使用的XBash恶意软件,XBash攻...', 'CTF编码全家桶小程序提供Base64、Url、HTML实体、莫尔斯电码等编码转换工具,凯撒密码、栅栏密码、ROT13、MD5、SHA等加密工具,及IP地址查询、Whois信息查询等工...', 'jQuery-File-Upload 是 Github 上继 jQuery 之后最受关注的 jQuery 项目,该项目最近被披露出一个存在了长达三年之久的任意文件上传漏洞,该漏洞在随后发布的 v9...', '第六期月刊—Linux pwn零基础入门教程全套上线啦~!!根据上期读者给出的优化建议进行了全方位优化修改。漂亮的排版,便捷的书签,巩固知识的课后习题,完整的知...', '上期的Android逆向之动态分析so篇大家学习的如何啦?本期斗哥将带来Android逆向之动态分析Frida篇。主要内容有Frida环境搭建与Frida在Android环境下的运行与使用...', '前几周斗哥分享了基线检查获取数据的脚本,但是在面对上百台的服务器,每台服务器上都跑一遍脚本那工作量可想而知,而且都是重复性的操作,于是斗哥思考能不能找...', '本期讲解一下hash函数,由于之前在比赛中做到了一题hash有关的题目,引发了此次的深(烧)度(脑)研究,本来想讲讲原理,但是太难,看得很痛苦,所以此次通过结...', '安全运维工作中经常需要进行安全基线配置和检查,所谓的安全基线配置就是系统的最基础的安全配置,类比木桶原理的那块最短的木板,安全基线其实是系统最低安全要...', '简介:PHPOK企业站系统(以下简称系统或本系统),采用PHP+MYSQL语言开发,是一套成熟完善的企业站...', '讲百遍不如打一遍,网络安全的本质是攻防的对抗。11月16日至17日,首届“天府杯”国际网络安全大赛将在成都天府新区西博城举办。在为期两天的活动中,精彩激烈的...', '当一颗恒星病变老去,黑洞就会出现,时间便如吹熄火苗般湮灭,所有的世界被吸收、被碾压直至崩溃、不复存在。这是他们的狂欢时刻,暗星已经崛起,若你不战,银河...', 'i春秋作家、SRC英雄榜前列“鱼蛋”师父的直播课录屏+PPT...', 'Bluecms是一个地方网站经常使用的开源的cms,在很多地方性的网站上应用还是不少的,今天在逛seebug的时候看到了一个漏洞的公告。有公告但是这里还没有详情,很好...', '学历和技术哪个更重要这个问题仿佛困扰了我们很多年,尤其是当“鱼与熊掌不可得兼”的时候,这种纠结就更加明显,其实在网络安全行业,从刚入门的学生到摸爬滚打...', '在使用Cobaltstrike的时候发现他在大型或者比较复杂的内网环境中,作为内网拓展以及红队工具使用时拓展能力有些不足,恰恰armitage可以补充这点,利用metasploit...'])

返回元祖的目标是为了方便后面的处理,毕竟这样的返回结果完全不能看好吗?后继的美化处理略。

后言

共勉。

使用requests和re模块爬取i春秋论坛的精品贴(小爬虫)相关推荐

  1. python使用requests和re模块爬取bilibili高清视频

    python使用requests和re模块爬取bilibili视频 首先我们抓包找找视频的真实的url藏在哪 我们看一下都要些什么参数 多点开几个视频抓包发现出来 avid 和 cid 其他的都不变, ...

  2. python爬取网页内容requests_[转][实战演练]python3使用requests模块爬取页面内容

    本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取 ...

  3. Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片

    Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...

  4. 使用nodejs Crawler模块 爬取页面dom数据,图片和视频等详解

    使用 nodejs Crawler模块 爬取页面数据 1. 安装 crawler 模块 2. 创建爬虫对象,开始爬取 3. 爬取文件 3.1 爬取页面结构dom树 3.2 爬取页面的图片 4. 爬取视 ...

  5. 一个使用 selenium 模块爬取(Twitter、New York Times)网站的可配置爬虫代码

    Selenium_Crawler 一个使用 selenium 模块爬取(Twitter.New York Times)网站的可配置爬虫代码 代码更新 3/11/2021 修改报错信息不明确的bug 更 ...

  6. 使用Requests库+re库爬取猫眼电影评分

    使用Requests库+re库爬取猫眼电影评分 作者:小胖 0x1: 分析 在简单的翻页中,我们可以知道.网页涵盖了以下几个规律 1.offset参数的值是除以30就是当前的页面 2.每个页面只有30 ...

  7. 网络爬虫---用urllib模块爬取京东笔记本电脑的数据、并对其做一个可视化

    用urllib模块爬取京东笔记本电脑的数据.并对其做一个可视化 文章目录 用urllib模块爬取京东笔记本电脑的数据.并对其做一个可视化 一.前言 二.知识要求 三.过程分析 1.观察主页面和每个电脑 ...

  8. 基于requests百度图库图片爬取

    这几天尝试图片的爬取,根据一篇博客,有了一些收获,来总结一下,此次爬取的对象是百度图库.百度爬虫分为就3部分: (1)获得批量图片的url: (2)通过每张图片的url获取图像内容: (3)保存图片. ...

  9. node.js(六)之crawler爬虫模块爬取王者荣耀官网所有英雄资源信息

    node.js爬虫模块爬取王者荣耀所有英雄信息 一.准备工作 https://pvp.qq.com/web201605/herolist.shtml进入王者荣耀所有英雄页面: 你会看到所有的英雄,打开 ...

最新文章

  1. 反向 Dropout!韩松团队最新工作NetAug:提高Tiny神经网络性能的新训练方法
  2. 重磅|PPT讲解机器人产业发展现状与未来展望,重磅资料
  3. python图像分割算法_Opencv(二)—图像分割之分水岭算法!
  4. python逗号bug
  5. 通过wifi 连接 adb 到 手机
  6. 移动平台对 meta 标签的定义
  7. sql练习三(DataWhale 系列-最终)
  8. 智能数据中心和智慧园区:华为的单点突破与全局效应
  9. Shifterator库 | 词移图分辨两文本用词风格差异
  10. 一些好用的手机软件分享
  11. 记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
  12. 流媒体协议之WebRTC实现p2p视频通话(二)
  13. java角度_Java Math.toDegrees()弧度转换成角度
  14. ActionScript 3.0 - MVC模式
  15. php unix时间戳 秒,UNIX时间戳怎么在php项目中使用
  16. uniapp mx-datepicker时间范围选择器禁用部分时间
  17. 根据地区名称获得经纬度
  18. 最常见的英文写作问题
  19. 一个数的因子个数求解公式
  20. Inventor之入门

热门文章

  1. 小黄的刷题之路(九)——码题集OJ赛-列表实现简单“合成2048”
  2. 如何安装govendor并打开项目
  3. CRM客户管理软件开发功能有哪些?
  4. BMZCTF Reverse5
  5. 智能设计应用于视频广告,从鲁班的视觉引擎谈起
  6. 假期必看的6部震撼狙击手电影
  7. 【电影】经典狙击手电影
  8. Python动态演示旋转矩阵的作用
  9. HTML5 nav导航标签使用
  10. 迈克杰克逊今天凌晨去世