爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)

不温卜火 等级 313 1 0

  大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://buwenbuhuo.blog.csdn.net/

PS:由于现在越来越多的人未经本人同意直接爬取博主本人文章,博主在此特别声明:未经本人允许,禁止转载!!!

目录


爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)


推荐

爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
  ♥各位如果想要交流的话,可以加下QQ交流群:974178910,里面有各种你想要的学习资料。♥

  ♥欢迎大家关注公众号【不温卜火】,关注公众号即可以提前阅读又可以获取各种干货哦,同时公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍1份哟~♥
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
博主前几天带来了一个通过查找百度接口实现翻译单词的小demo,本次将继续带来另一个使用正则的小demo。只需一行正则代码,即可爬取某高校官网通知公告。

一. 前期准备

说要爬取高校,那肯定要爬高校的,要不然就显的本博主言而无信!但是问题来了,要爬取哪个高校呢?不仅能够成功爬取到信息并且只需要一行正则表达式即可提取到相关信息。这可有点难为住博主了,正在这是 博主想到了自己学校,并且找到了自己学校就业处的网站,通过查看网站规则,发现正好符合规则。当然了博主本人的学校为双非院校,只是一所普通本二院校…Hahahaha… 话不多说,正片正式开始:

    1. 分析网页

首先给出我们要爬取的网址:https://zs.hait.edu.cn/list.jsp?urltype=tree.TreeTempUrl&wbtreeid=1261
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)

我们打开网址以后,页面如上图所示,我们可以看到整个界面上,最多的就是一个又一个的通知公告,那么我们就知道我们需要爬取的内容。下面我们打开开发者选项
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
通过上图,我们可以看到每一个tr标签对应一个通知公告,这个时候我们打开其中一个tr标签进行查看
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
打开之后,我们可以看到我们所需要的所有信息都在a标签内,找到了位置,下面我们就可以进行解析实现了。当然了,博主本人还是更喜欢使用xpath进行解析的。

    1. 解析获取标题

下面先让大家看下xpath解析我们所需要的标题的方法:
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
怎么样,是不是很简单。但是由于本篇博文是要用正则表达式,所以,博主还是使用正则表达式进行获取标题

爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
上述的正则表达式(.*?)代表获取选中部分的所有内容。

如果有小伙伴对正则表达式有不懂的,可以自行查看下博主给的链接https://www.runoob.com/regexp/regexp-syntax.html
当然了,写好了正则表达式当然需要先测试下能否成功获取到我们所需要的内容,下面给出测试结果:
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
🆗,我们可以看到获取到的结果是正确的,如果正则写的不对的话,需要多次查看调试,这不是什么难活,主要是需要有足够的耐心就够了。

    1. 保存到本地

此处,个人感觉 没啥需要讲解的地方,所以直接贴出代码

 with open("./河工院通告.txt","w",encoding="utf-8") as file:
        #循环
        for title in title_list:
            #写
            file.write(title)
            file.write("\n")
    print("保存完毕!") 

二. 从思想转换成程序

既然大体思路已经完成了,那么下面就还差完成代码了

    1. 思路及源码

那么下面就是代码的实现过程了:
1.设定所需爬取的URL
2. 添加请求头,伪装成浏览器。这位最基本的手段
3. 发送请求,获取数据
4. 通过正则提取所有内容
5. 保存内容到本地

#!/usr/bin/env python
# encoding: utf-8
'''
  @author 李华鑫
  @create 2020-10-06 10:04
  Mycsdn:https://buwenbuhuo.blog.csdn.net/
  @contact: 459804692@qq.com
  @software: Pycharm
  @file: 爬河工院通告.py
  @Version:1.0

'''
# 导入包
import requests
import re

url = "https://zs.hait.edu.cn/list.jsp?urltype=tree.TreeTempUrl&wbtreeid=1261"
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}
def hegong_Spider():
    # 发送请求,获取响应
    response = requests.get(url=url, headers=headers)
    # 获取响应数据
    content = response.content.decode("utf-8")
    # 提取数据,使用正则表达式
    title_list = re.findall(r'<a class="c57797".*?title="(.*?)">.*?</a>',content,flags=re.DOTALL)

    #打开文件写
    with open("./河工院通告.txt","w",encoding="utf-8") as file:
        #循环
        for title in title_list:
            #写
            file.write(title)
            file.write("\n")
    print("保存完毕!")
if __name__ == '__main__':
    hegong_Spider() 
    1. 运行结果

爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)

三. 代码升级

上述代码,我们只能爬取第一个的内容,这和我们所想的是有差别的,我们想的是要爬取所有通告,这个时候不用想我们就需要通过模拟翻页动作,进行全部获取。

    1. 分析

我们先来通过查看网址的变化以及查看能否看到网站的总页数,好以此来实现爬取全部标题的目的。

首先我们先来看下网址差异:

https://zs.hait.edu.cn/list.jsp?a5t=13&a5p=1&a5c=15&urltype=tree.TreeTempUrl&wbtreeid=1261
https://zs.hait.edu.cn/list.jsp?a5t=13&a5p=2&a5c=15&urltype=tree.TreeTempUrl&wbtreeid=1261
https://zs.hait.edu.cn/list.jsp?a5t=13&a5p=4&a5c=15&urltype=tree.TreeTempUrl&wbtreeid=1261 

根据上述三个网址,我们不难发现网址唯一变化的地方就是
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
那么,我们就可以通过拼接网址的方式实现网页跳转。

下面我们再来查看网站总共有多少页码。
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
我们可以看到总共有13页,下面就很简单了,我们先来看下拼接的url是否是我们所需要的
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)

    1. 源码

🆗通过上图,看到url是我们所需要的,下面就可以完善一开始的代码了:

#!/usr/bin/env python
# encoding: utf-8
'''
  @author 李华鑫
  @create 2020-10-06 10:04
  Mycsdn:https://buwenbuhuo.blog.csdn.net/
  @contact: 459804692@qq.com
  @software: Pycharm
  @file: 爬河工院通告分页.py
  @Version:1.0

'''
# 导入包
import random
import time
import requests
import re


headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}
base_url = "https://zs.hait.edu.cn/list.jsp?a5t=13&a5p={}&a5c=15&urltype=tree.TreeTempUrl&wbtreeid=1261"

def hegong_Spider():
    # 翻页
    for i in range(1, 14):
        print("第{}页爬取中...".format(i))
        time.sleep(random.random())
        url = base_url.format(i)
        # 发送请求,获取响应
        response = requests.get(url=url, headers=headers)
        # 获取响应数据
        content = response.content.decode("utf-8")
        # 提取数据,使用正则表达式
        title_list = re.findall(r'<a class="c57797".*?title="(.*?)">.*?</a>', content, flags=re.DOTALL)
        # title_list = content.xpath('//a[@class="c57797"]/@title').extract()
        # 打开文件写
        with open("./河工院通告.txt", "a", encoding="utf-8") as file:
            # 循环
            for title in title_list:
                # 写
                file.write(title)
                file.write("\n")
            print("保存完毕!")

if __name__ == '__main__':
    hegong_Spider() 
    1. 运行结果

爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
美好的日子总是短暂的,虽然还想继续与大家畅谈,但是本篇博文到此已经结束了,如果还嫌不够过瘾,不用担心,我们下篇见!


爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)

  好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
  如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
  码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!

爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)

本文转自 https://buwenbuhuo.blog.csdn.net/article/details/109016583,如有侵权,请联系删除。

收藏
评论区

相关推荐

php怎么做页面静态化
页面静态化的好处 根据不同情况,有些需要生成静态页,有些实现伪静态即可,根据实际需求进行抉择。而静态化的好处,总结下来有以下几点: ● 提高访问速
本博客精品资源汇总:(持续更新)
@toc 引言 欢迎大家来到公众号:iOS逆向的《精品资源汇总》目录 本文列出最受欢迎的资源,以便供大家快速查找自己所需的资料 文中的蓝字都是超级链接,点击进入即可 I、iOS自定义视图相关热门资源 iOS 自定义视图:《用户协议及隐私政策》弹框(包含超链接属性)【demo源码支持中英文切换】(https://downloa
爬虫入门经典(一) | 一文教你用Spider制作简易的翻译工具
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(七) | 一文带你爬取淘宝电场
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(八) | 一文带你快速爬取股吧
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
爬虫入门经典(二十二) | 破解base64加密之爬取安居客
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
算法笔记:B树
B树广泛应用于各种文件系统,文件系统中,数据都是按照数据块来进行读取操作。结合二叉树的优点和文件系统的特点,于是就有了B树: btree(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/ae3caa193bc4c55f0519114b15313721.png) B树当中每个节点存储
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
Pandas案例精进 | 结构化数据非等值范围查找 ②
(https://imghelloworld.osscnbeijing.aliyuncs.com/4971fbce1ecb759123ecc666f3af2c31.png) 大家好,我是小五🐶 欢迎来到「Pandas案例精进」专栏(https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzU5Nzg
被“词云”包围的冰冰会更好看吗?安排
(https://imghelloworld.osscnbeijing.aliyuncs.com/b299933deefc692934e8cc6141ab3894.png) 大家好,我是小五🐶 昨天「凹凸数据」发了一篇张同学投稿的文章《用Python爬取王冰冰vlog弹幕并制作词云(https://mp.weixin.qq.com/
Python Flask 框架使用及常见异常处理
1.jinja2.exceptions.TemplateNotFound出错 如图, 示例(https://imghelloworld.osscnbeijing.aliyuncs.com/851ef735dfc6426c04797c8f07ab877f.png) 文件夹(https://imghelloworld.osscnbei
商业数据分析从入门到入职(9)Python网络数据获取
@toc 前言本文主要讲Python最常见的应用之一——网络数据获取,即爬虫:先介绍了网页和网络的基础知识,为从网页中获取数据打好基础;接下来以两个案例介绍从网络中获取数据和处理数据的不同方式,以进一步认识Python爬虫和数据处理。 一、网络和网页基础知识 1.数据来源数据源有很多,可以从数据库中获取,可以从文件中获取,也可以从
手把手教你用Python实现Excel中的Vlookup功能
一、前言大家好,我是崔艳飞。工作中经常会遇到,需要把两张Excel或Csv数据表通过关键字段进行关联,匹配对应数据的情况,Excel虽有Vlookup函数可以处理,但数据量大时容易计算机无响应,可能出现数据丢失,处理速度较慢是软肋,而Python只需几行代码就能轻松实现,且处理速度快,详细如下。 二、项目目标用Python实现两张Excel或Csv表数据关
手把手教你用Python替代Mapinfo更快查找两张表中距离最近的点
一、前言大家好,我是崔艳飞。工作中有时需要把A表中的经纬度点,从B表中匹配一个最近的点出来,用Mapinfo也可以实现,但处理速度慢,特别是数据量大时根本处理不动,此时用Python就能轻松实现,还能显示处理进度,详细如下。 二、项目目标用Python实现两张表间最近点的计算。 三、项目准备软件:PyCharm需要的库:pandas, xlrd,os