Python代码爬取网站数据并筛选包含关键词的学校代码
使用Python代码爬取网站数据并筛选包含关键词的学校代码
本文将使用Python代码爬取网站数据,并筛选出包含关键词'计算机'的学校代码。
问题描述
目标网站:https://www.eeagd.edu.cn/lzks/yxzycx/yxzy.jsp
目标数据:学校代码(以'yx_h'参数中的数字表示)
筛选条件:网站页面内容包含'计算机'关键词
代码实现
import requests
import time
alter_char = [10001, 10002, 10003, 10013, 10246]
for char in alter_char:
url = f'https://www.eeagd.edu.cn/lzks/yxzycx/yxzy.jsp?yx_h={char}&pc_h=11&jhlb_h=00&zykl_h=2'
try:
res = requests.get(url, timeout=5)
res.raise_for_status() # 检查请求是否成功
if '计算机' in res.text:
print(f'学校代码 {char} 页面包含关键词“计算机”')
except requests.exceptions.ConnectionError as e:
print(f'连接错误: {e}, 延时1秒后重试...')
time.sleep(1)
except requests.exceptions.HTTPError as e:
print(f'HTTP错误: {e}, 延时1秒后重试...')
time.sleep(1)
except requests.exceptions.Timeout as e:
print(f'请求超时: {e}, 延时1秒后重试...')
time.sleep(1)
except Exception as e:
print(f'其他错误: {e}, 延时1秒后重试...')
time.sleep(1)
代码解释
- 导入
requests和time库,分别用于发送HTTP请求和控制时间延时。 - 定义一个列表
alter_char,包含需要替换的学校代码。 - 使用
for循环遍历列表alter_char,生成每个学校的URL。 - 使用
requests.get()方法发送HTTP请求,并设置超时时间为5秒。 - 使用
res.raise_for_status()检查请求是否成功,如果出现错误,将抛出异常。 - 使用
if '计算机' in res.text:判断页面内容是否包含'计算机'关键词。 - 使用
try-except语句捕获可能的异常,并进行相应的处理。 - 遇到
requests.exceptions.ConnectionError、requests.exceptions.HTTPError、requests.exceptions.Timeout或其他异常时,打印错误信息,延时1秒后重新尝试连接。
代码优化
- 使用
f-string格式化URL,提高代码可读性。 - 设置请求超时时间,避免程序长时间等待。
- 使用
res.raise_for_status()检查请求状态,方便排查错误。 - 使用
try-except语句捕获异常,防止程序崩溃。 - 加入时间延时,避免请求速度过快导致连接数超限。
注意
- 爬取网站数据应遵守网站的Robots协议,避免过度爬取造成服务器负担。
- 爬取网站数据需注意数据安全和隐私保护,避免泄露用户敏感信息。
总结
本文提供了一个使用Python代码爬取网站数据并筛选包含关键词的学校代码的示例,并解决了一些常见问题,例如连接数限制、请求速度过快等。开发者可以根据实际需求修改代码,实现更多功能。
原文地址: https://www.cveoy.top/t/topic/oQyO 著作权归作者所有。请勿转载和采集!