Advertisement

自学30天python,简易爬取学校通告栏的信息。

阅读量:

文章目录

  • 前言

  • 一、准备

  • 二、步骤

    • 1.分析
    • 2.获取数据
    • 2.保存到txt
    • 3.获取多页信息
    • 4.完整代码
  • 总结


前言

这是一篇来自python小辣鸡的文章,也是小菜鸡第一次写博客
如果有失望,多多海涵,还恳请各位前辈指出,谢谢你哟!


一、准备

起初,我想抓取自己所在的学校,奈何学校官网一直瘫痪…思来复去,我想到了小辣鸡一直向往的大学。
如有冒犯、警告,我会删的。

二、步骤

1.分析

这是我要摘取的信息网站https://www.ynnu.edu.cn/sdxw1/ywjj/234.htm,哈哈哈哈没错就是云师大,我非常向往的大学。在这里插入图片描述
中间部分的要闻聚焦就是我们今天要抓取的数据,gogogo
在这里插入图片描述
F12 打开开发者选项我们发现,我们需要的学校要闻在一个个 a 标签 中。

打开https://regex101.com/ 正则表达式在线测试工具,对我们所需要的的通告栏匹配
在这里插入图片描述

2.获取数据

前面忘记叙述了,正则表达式 (.*?) 里面正是我们需要提取的东西
在这里插入图片描述
嘻嘻嘻嘻,这样就搞出来了。
我也试过很多次,一开始运行什么都没有,也不报错。
原来是正则错了,一定要多试几次。

2.保存到txt

利用for循环,抓取一条保存一条,然后写入当前文档下的txt,如果没有就新建txt

复制代码
        with open("./云师大.txt", "w", encoding="utf-8") as file:
            for title1 in title_list:
                file.write(title1)  # 写入标题
                file.write("\n")	# 为了美观,在读取一条结束后插入换行
            print("OK了")
    
    
      
      
      
      
      
    
在这里插入图片描述

3.获取多页信息

爬取一页是我们想要的吗?No。撸起袖子加油干,冲。
在这里插入图片描述

通过观察几页地址信息的情况下,我们发现唯一变化的是后面的值。再仔细观察,这些值是从234 - 1 逐一递减的。那我们在模拟翻页的时候,就要在for循环中的range依次从大到小,然后逐次减1。

4.完整代码

因为234页实属有点多,我就提取了4页的信息

复制代码
    import requests
    import re
    
    base_url = "https://www.ynnu.edu.cn/sdxw1/ywjj/{}.htm"
    headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                         "(KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
    
    def Yunda_spider():
    for i in range(234, 230, -1):
        print("正在爬取第{}页".format(i))
        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=\"c140645\" .*? title=\"(.*?)\">', content, flags=re.DOTALL)
        for title in title_list:
            print(title)
        with open("./云师大.txt", "w", encoding="utf-8") as file:
            for title1 in title_list:
                file.write(title1)
                file.write("\n")
            print("OK了")
    
    
    
    if __name__ == '__main__':
    Yunda_spider()
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

总结

是不是很简单,但是小辣鸡正在努力学习,不断改进。
如果有误,希望能得到大佬的指导。
感谢你的观看。

全部评论 (0)

还没有任何评论哟~