爬取学校教务处网站教学新闻 - 使用 Python 和正则表达式
使用 Python 爬取学校教务处网站教学新闻/n/n本教程将演示如何使用 Python 编写一个基础爬虫,从学校教务处网站(https://jwc.sues.edu.cn/jxxw/list.htm)获取所有教学新闻,并提取新闻的序号、链接、标题和发布时间,并将结果输出到控制台和保存到文本文件。/n/n### 代码实现/n/npython/nimport requests/nimport re/n/ndef get_news_urls():/n base_url = 'https://jwc.sues.edu.cn/jxxw/list.htm'/n response = requests.get(base_url)/n html = response.text/n /n # 使用正则表达式匹配新闻链接/n pattern = r'<a href='(/jxxw/[0-9]+/.htm)' target='_blank'>(.*?)</a>'/n news_urls = re.findall(pattern, html)/n /n return news_urls/n/ndef get_news_content(url):/n base_url = 'https://jwc.sues.edu.cn'/n response = requests.get(base_url + url)/n html = response.text/n /n # 使用正则表达式匹配新闻内容/n pattern = r'<div class='Article_Content'>(.*?)</div>'/n content = re.findall(pattern, html, re.S)/n /n return content[0] if content else ''/n/ndef main():/n news_urls = get_news_urls()/n /n # 打印和保存结果/n with open('suesnew_result.txt', 'w', encoding='utf-8') as f:/n for i, (url, title) in enumerate(news_urls, start=1):/n content = get_news_content(url)/n print('序号:', i)/n print('链接:', 'https://jwc.sues.edu.cn' + url)/n print('标题:', title)/n print('时间:', re.search(r'(/d{4}-/d{2}-/d{2})', content).group(1))/n print()/n /n # 写入文件/n f.write('序号:' + str(i) + '//n')/n f.write('链接:' + 'https://jwc.sues.edu.cn' + url + '//n')/n f.write('标题:' + title + '//n')/n f.write('时间:' + re.search(r'(/d{4}-/d{2}-/d{2})', content).group(1) + '//n')/n f.write('//n')/n/nif __name__ == '__main__':/n main()/n/n/n### 代码解析/n/n1. 导入库: 导入 requests 库用于发送 HTTP 请求,以及 re 库用于使用正则表达式。/n2. 获取新闻链接: get_news_urls() 函数使用正则表达式 r'<a href='(/jxxw/[0-9]+/.htm)' target='_blank'>(.*?)</a>' 从网页源代码中匹配所有新闻链接,并将链接和标题存储在一个列表中返回。/n3. 获取新闻内容: get_news_content() 函数接收新闻链接作为参数,使用 requests 库获取新闻页面,并使用正则表达式 r'<div class='Article_Content'>(.*?)</div>' 提取新闻内容。/n4. 主函数: main() 函数首先调用 get_news_urls() 获取所有新闻链接。然后,遍历所有新闻链接,分别获取新闻内容,并提取新闻的序号、链接、标题和发布时间。最后,将结果打印到控制台和写入 suesnew_result.txt 文本文件。/n/n### 运行代码/n/n1. 确保已经安装了 Python 和 requests 库。/n2. 将代码保存为一个 .py 文件。/n3. 运行代码。/n/n代码运行后,程序将会从学校教务处网站上获取所有教学新闻,并按照序号、链接、标题、时间的格式打印出来,同时结果也会保存到 suesnew_result.txt 文本文档中。/n/n### 注意/n/n- 网站结构可能会发生变化,导致代码失效。需要根据网站结构调整正则表达式。/n- 爬取网站数据时,请遵守网站的爬取规则,避免对网站造成过大的负荷。/n- 可以根据需要修改代码,增加其他功能,例如将数据存储到数据库等。/n
原文地址: https://www.cveoy.top/t/topic/o2Oe 著作权归作者所有。请勿转载和采集!