自学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)
还没有任何评论哟~
