当前位置: 首页 > news >正文

淮安网站建设费用/百度指数官网移动版

淮安网站建设费用,百度指数官网移动版,wordpress访问优化插件,wordpress 仿小米在Python中,异常处理通常使用try-except语句块来实现。你可以捕获特定的异常类型,也可以捕获通用异常。 1. 捕获特定异常 针对常见的网络请求异常和解析异常,可以捕获具体的异常类型,例如requests.exceptions.RequestException、…

在Python中,异常处理通常使用try-except语句块来实现。你可以捕获特定的异常类型,也可以捕获通用异常。

1. 捕获特定异常

针对常见的网络请求异常和解析异常,可以捕获具体的异常类型,例如requests.exceptions.RequestExceptionAttributeError等。

示例代码:
import requests
from bs4 import BeautifulSoupdef fetch_page(url):try:response = requests.get(url, timeout=10)  # 设置超时时间response.raise_for_status()  # 检查HTTP响应状态码return response.textexcept requests.exceptions.RequestException as e:print(f"网络请求失败: {e}")except Exception as e:print(f"发生未知异常: {e}")return Nonedef parse_page(html):if not html:return []try:soup = BeautifulSoup(html, 'html.parser')items = soup.find_all('div', class_='item')data = []for item in items:title = item.find('h2').text.strip()price = item.find('span', class_='price').text.strip()data.append({'title': title, 'price': price})return dataexcept AttributeError as e:print(f"HTML解析失败: {e}")return []# 示例用法
url = "https://example.com"
html = fetch_page(url)
if html:data = parse_page(html)print(data)

2. 使用日志记录异常

在生产环境中,建议使用logging模块记录异常信息,以便后续分析和排查问题。

示例代码:
import logginglogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')def fetch_page(url):try:response = requests.get(url, timeout=10)response.raise_for_status()return response.textexcept requests.exceptions.RequestException as e:logging.error(f"网络请求失败: {e}")except Exception as e:logging.error(f"发生未知异常: {e}")return None

3. 重试机制

对于网络请求失败的情况,可以设置重试机制,提高爬虫的鲁棒性。

示例代码:
import time
from requests.exceptions import RequestExceptiondef fetch_page_with_retry(url, max_retries=3):retries = 0while retries < max_retries:try:response = requests.get(url, timeout=10)response.raise_for_status()return response.textexcept RequestException as e:retries += 1logging.warning(f"请求失败,正在重试 ({retries}/{max_retries}): {e}")time.sleep(2)  # 等待2秒后重试logging.error(f"重试次数已达上限,放弃请求")return None

Java 爬虫中的异常处理

在Java中,异常处理通常使用try-catch语句块来实现。你可以捕获特定的异常类型,例如IOExceptionParseException等。

1. 捕获特定异常

针对常见的网络请求异常和解析异常,可以捕获具体的异常类型。

示例代码:
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;public class WebScraper {public static String fetchPage(String url) {try {HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(10000); // 设置连接超时connection.setReadTimeout(10000);    // 设置读取超时int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {Scanner scanner = new Scanner(connection.getInputStream());StringBuilder response = new StringBuilder();while (scanner.hasNext()) {response.append(scanner.nextLine());}scanner.close();return response.toString();} else {System.out.println("请求失败,状态码: " + responseCode);}} catch (IOException e) {System.err.println("网络请求失败: " + e.getMessage());} catch (Exception e) {System.err.println("发生未知异常: " + e.getMessage());}return null;}public static void main(String[] args) {String url = "https://example.com";String html = fetchPage(url);if (html != null) {System.out.println(html);}}
}

2. 使用日志记录异常

在生产环境中,建议使用日志框架(如Log4jSLF4J)记录异常信息。

示例代码:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class WebScraper {private static final Logger logger = LogManager.getLogger(WebScraper.class);public static String fetchPage(String url) {try {HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(10000);connection.setReadTimeout(10000);int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {Scanner scanner = new Scanner(connection.getInputStream());StringBuilder response = new StringBuilder();while (scanner.hasNext()) {response.append(scanner.nextLine());}scanner.close();return response.toString();} else {logger.error("请求失败,状态码: " + responseCode);}} catch (IOException e) {logger.error("网络请求失败: " + e.getMessage());} catch (Exception e) {logger.error("发生未知异常: " + e.getMessage());}return null;}public static void main(String[] args) {String url = "https://example.com";String html = fetchPage(url);if (html != null) {logger.info(html);}}
}

3. 重试机制

对于网络请求失败的情况,可以设置重试机制,提高爬虫的鲁棒性。

示例代码:
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;public class WebScraper {public static String fetchPageWithRetry(String url, int maxRetries) {int retries = 0;while (retries < maxRetries) {try {HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(10000);connection.setReadTimeout(10000);int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {Scanner scanner = new Scanner(connection.getInputStream());StringBuilder response = new StringBuilder();while (scanner.hasNext()) {response.append(scanner.nextLine());}scanner.close();return response.toString();} else {logger.error("请求失败,状态码: " + responseCode);}} catch (IOException e) {retries++;logger.warn("请求失败,正在重试 (" + retries + "/" + maxRetries + "): " + e.getMessage());try {Thread.sleep(2000); // 等待2秒后重试} catch (InterruptedException ie) {Thread.currentThread().interrupt();}} catch (Exception e) {logger.error("发生未知异常: " + e.getMessage());break;}}logger.error("重试次数已达上限,放弃请求");return null;}public static void main(String[] args) {String url = "https://example.com";String html = fetchPageWithRetry(url, 3);if (html != null) {logger.info(html);}}
}

总结

通过合理设置异常处理机制,可以有效提升爬虫的稳定性和可靠性。主要的异常处理策略包括:

  1. 使用try-catch捕获异常。

  2. 使用日志记录异常信息。

  3. 设置重试机制处理网络异常。

  4. 对不同类型的异常进行分类处理。

  5. finally块中清理资源。

在实际开发中,可以根据爬虫的具体需求和目标网站的特点,灵活调整异常处理策略,确保爬虫能够在复杂环境下稳定运行。

http://www.whsansanxincailiao.cn/news/32058318.html

相关文章:

  • 池州做网站/快速排名优化推广排名
  • java 网站开发教程 pdf/seo优化顾问服务
  • 只用jsp做网站/品牌推广和营销推广
  • 长沙做网站公众微信号/二级域名免费申请
  • 短视频网站的动画是怎么做的/整合营销策略有哪些
  • 北辰做网站/搜索引擎平台排名
  • 用java做的网站实例/seo优化技术培训中心
  • 南京做网站建设有哪些/seo的作用是什么
  • 河南省城市建设网站/互动营销的方式有哪些
  • 网站运营刚做时的工作内容/爱链接网如何使用
  • 广州市南沙区基本建设办公室网站/龙华网站建设
  • 合肥公司网站建设/百度信息流广告怎么投放
  • 网站基站的建设方案/爱站长尾词
  • 公司网站制作武汉/互联网广告销售
  • 制作做的网站如何上传网上/中国搜索网站排名
  • 惠州做企业网站的/南昌seo技术外包
  • 辽宁省住建厅建设网站/重庆网站seo公司
  • 浙江省建设会计协会网站首页/厦门网站外包
  • 专门做电视剧截图的网站/优秀网页设计赏析
  • 建设银行网站打印账单/近10天的时事新闻
  • 网站图片计时器怎么做/网站推广优化技巧
  • 视差 长沙做网站/填写电话的广告
  • 汕头网站推广找哪里/无锡网站优化
  • 成都企业网站建设公司/企业培训体系
  • 中山手机网站建设/百度搜索引擎排行榜
  • 加若格网站做么样/全网关键词云查询
  • 新闻网站开发背景/大连百度推广公司
  • 在工商局网站做变更需要多久/百度指数的数据怎么导出
  • 织梦网站栏目设计/全国新冠疫苗接种率
  • 委托建设网站项目协议书范本/今日发生的重大国际新闻