使用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)

代码解释

  1. 导入requeststime库,分别用于发送HTTP请求和控制时间延时。
  2. 定义一个列表alter_char,包含需要替换的学校代码。
  3. 使用for循环遍历列表alter_char,生成每个学校的URL。
  4. 使用requests.get()方法发送HTTP请求,并设置超时时间为5秒。
  5. 使用res.raise_for_status()检查请求是否成功,如果出现错误,将抛出异常。
  6. 使用if '计算机' in res.text:判断页面内容是否包含'计算机'关键词。
  7. 使用try-except语句捕获可能的异常,并进行相应的处理。
  8. 遇到requests.exceptions.ConnectionErrorrequests.exceptions.HTTPErrorrequests.exceptions.Timeout或其他异常时,打印错误信息,延时1秒后重新尝试连接。

代码优化

  1. 使用f-string格式化URL,提高代码可读性。
  2. 设置请求超时时间,避免程序长时间等待。
  3. 使用res.raise_for_status()检查请求状态,方便排查错误。
  4. 使用try-except语句捕获异常,防止程序崩溃。
  5. 加入时间延时,避免请求速度过快导致连接数超限。

注意

  1. 爬取网站数据应遵守网站的Robots协议,避免过度爬取造成服务器负担。
  2. 爬取网站数据需注意数据安全和隐私保护,避免泄露用户敏感信息。

总结

本文提供了一个使用Python代码爬取网站数据并筛选包含关键词的学校代码的示例,并解决了一些常见问题,例如连接数限制、请求速度过快等。开发者可以根据实际需求修改代码,实现更多功能。

Python代码爬取网站数据并筛选包含关键词的学校代码

原文地址: https://www.cveoy.top/t/topic/oQyO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录