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

不温卜火 等级 570 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,如有侵权,请联系删除。

收藏
评论区

相关推荐

爬虫入门经典(二) | 只需一行正则即可爬取某高校就业处通知公告,速进(超简单-。-)
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行
商业数据分析从入门到入职(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
C# 给某个方法设定执行超时时间
参考:https://blog.csdn.net/educast/article/details/7430932 进群:![](https://files-cdn.cnblogs.com/files/luofuxian/jqerweima.bmp)   由于某些方法可能产生阻止线程继续执行,需要定义防止超时,且可以得到是否超时,超时可执行某些操作; 主
PHP超时处理全面总结
【 概述 】 在PHP开发中工作里非常多使用到超时处理到超时的场合,我说几个场景: 1. 异步获取数据如果某个后端数据源获取不成功则跳过,不影响整个页面展现 2. 为了保证Web服务器不会因为当个页面处理性能差而导致无法访问其他页面,则会对某些页面操作设置 3. 对于某些上传或者不确定处理时间的场合,则需要对整个流程中所有超时设置为无限,否则任何一个环节设置
CDN与缓存的归纳理解
缓存是什么 ===== 缓存是一个到处都存在的用空间换时间的例子。通过使用多余的空间,我们能够获取更快的速度。 我们通常意义上说的缓存主要包含两部分。第一个是用户浏览器端的缓存,第二个是服务器端为了提高访问速度而加的CDN。 首先,看看没有网站没有接入CDN时,用户浏览器与服务器是如何交互的: ![q111.png](https://oscimg.o
Excel中的xls、xlsx、xlsm混合文件,看我用Python如何统一处理......
点击上方“**Python爬虫与数据挖掘**”,进行关注 回复“**书籍**”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 洞房昨夜停红烛,待晓堂前拜舅姑。 引言 -- **Python语言,近几年在办公自动化这一领域来说,真的超级火爆!**用它做批量处理确实比VBA要方便很多。 前面的文章,我们已经讲述了**如何将do
FLV 分析脚本
一、需求   通过脚本,可以检查本地flv文件格式是否正确,可以打印每个Tag中的二进制内容 二、效果   可以看到VideoTag中开始处增加了一段SEI数据,并且可以看到部分字段,gameid、time、network   ![](https://oscimg.oschina.net/oscnet/069ddb2c02a788283e3c58f7
Guava RateLimiter限流器使用示例
Guava中的RateLimiter可以限制单进程中某个方法的速率,本文主要介绍如何使用,实现原理请参考文档:[推荐:超详细的Guava RateLimiter限流原理解析](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F60979444)
Jmeter操作之跨线程组传递参数
思路:将某一线程组内的变量通过“\_\_setProperty”函数设置成jmeter的全局变量,在另一线程组中通过“\_\_P”函数调用即可。 1.添加-后置处理器-BeanShell PostProcessor  ![](https://oscimg.oschina.net/oscnet/1270ecc86f941a4f5a0092865830b48
PHP快速读取CSV大文件
CSV大文件的读取已经在前面讲述过了,但是如何快速完整的操作大文件仍然还存在一些问题。 1、如何快速获取CSV大文件的总行数? 办法一:直接获取文件内容,使用换行符进行拆分得出总行数,这种办法对小文件可行,处理大文件时不可行; 办法二:使用fgets一行一行遍历,得出总行数,这种办法比办法一好一些,但大文件仍有超时的可能; 办法三:借助SplFile
Python 什么时候会被取代?
![](https://oscimg.oschina.net/oscnet/4e755c25d09a136682cfbbbd8aad8b89c4c.jpg) 编译:CSDN-弯月,作者:Rhea MoutafisPython 经过了几十年的努力才得到了编程社区的赏识。自 2010 年以来,Python 得到了蓬勃发展,并最终超越了 C、C#、Java 和
Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM
转载请注明作者和出处: https://zhuanlan.zhihu.com/ml-jack 机器学习知乎专栏:https://zhuanlan.zhihu.com/ml-jack CSDN博客专栏:http://blog.csdn.net/column/details/16415.html Github代码获取:https://github.c
Python异常捕获与处理
### 一、任务描述   本实验任务主要对Python异常进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python异常的基本操作。并对异常的基本操作进行整理并填写工作任务报告。 ### 二、任务目标 1、掌握Python异常的捕获 2、掌握Python异常的处理 ### 三、任务环境 Ubuntu16.04、Python2.7 ###