点击查看:本场技术统计
[英文解说-腾讯] 04月29日NBA季后赛东部首轮G6 76人vs猛龙 全场完整录像
[英文解说-腾讯] 04月29日NBA季后赛东部首轮G6 76人vs猛龙 全场精华回放
[英文解说-腾讯] 04月29日NBA季后赛东部首轮G6 76人vs猛龙 第一节 录像
[英文解说-腾讯] 04月29日NBA季后赛东部首轮G6 76人vs猛龙 第二节 录像
[英文解说-腾讯] 04月29日NBA季后赛东部首轮G6 76人vs猛龙 第三节 录像
以上代码是一个体育新闻的爬虫,具体实现的功能是抓取比赛视频和文字信息并分别保存到对应的文件中。但是在实际运行中,存在一个问题:当网络出现短暂中断时,程序会直接报错并终止执行。如何修改上述代码,使其能够在遇到错误时能够继续执行? 要使爬虫在遇到错误时能够继续执行,可以使用异常处理机制(try-except)来捕获和处理可能出现的网络请求相关的异常。下面是一个改进后的示例代码: ```python import requests def fetch_data(url): try: response = requests.get(url, timeout=10) # 设置超时时间防止长时间阻塞 response.raise_for_status() # 检查是否请求成功,如果4xx或5xx则抛出异常 return response.text except requests.RequestException as e: print(f"Error fetching data from {url}: {e}") return None def save_data(content, file_path): try: with open(file_path, 'w', encoding='utf-8') as f: f.write(content) except IOError as e: print(f"Error saving content to {file_path}: {e}") def main(): # 假设的URL和文件路径 url_video = "https://example.com/video" url_text = "https://example.com/text" file_video = 'video.txt' file_text = 'text.txt' video_content = fetch_data(url_video) if video_content is not None: save_data(video_content, file_video) text_content = fetch_data(url_text) if text_content is not None: save_data(text_content, file_text) if __name__ == "__main__": main() ``` ### 代码说明: 1. **`fetch_data` 函数**:负责从给定的 URL 获取数据,并处理请求过程中可能出现的各种异常,如网络超时、无效响应等。 2. **`save_data` 函数**:用于将获取到的数据保存到指定文件中。同样包含了对IO操作的异常处理。 3. **主函数 `main` 中**:调用上述两个辅助函数来分别下载视频和文字信息,并保存它们。 通过这种方式,即使在某个网络请求失败的情况下,程序也可以继续执行其他未受影响的操作,从而提高整体的健壮性和可用性。同时,错误日志会记录下哪些环节出错,方便后续调试。 确保实际使用中替换 `url_video` 和 `url_text` 为正确的URL,并适当修改文件路径以适应你的需求。此外,可以进一步根据具体的应用场景调整异常处理策略和超时时间等设置。费城76人相关录像
更多录像 >