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

杭州做网站企业中信建设有限责任公司深圳中信金融中心项目工期专业招标

杭州做网站企业,中信建设有限责任公司深圳中信金融中心项目工期专业招标,深圳装饰网站建设,企业培训课程价格在实际项目中#xff0c;爬虫的稳定性和效率至关重要。通过错误处理与重试机制、定时任务以及性能优化#xff0c;可以确保爬虫的高效稳定运行。下面我们详细介绍这些方面的技巧和方法。 错误处理与重试机制 在爬虫运行过程中#xff0c;网络不稳定、目标网站变化等因素可…在实际项目中爬虫的稳定性和效率至关重要。通过错误处理与重试机制、定时任务以及性能优化可以确保爬虫的高效稳定运行。下面我们详细介绍这些方面的技巧和方法。 错误处理与重试机制 在爬虫运行过程中网络不稳定、目标网站变化等因素可能会导致请求失败。为了确保爬虫的健壮性需要实现错误处理与重试机制。 示例实现错误处理与重试机制 我们将修改之前的新闻爬虫示例加入错误处理与重试机制。 import requests from bs4 import BeautifulSoup import csv import time# 文章列表页URL模板 base_url http://news.example.com/page/ max_retries 3 # 最大重试次数# 爬取文章详情的函数 def fetch_article(url):for attempt in range(max_retries):try:response requests.get(url)response.raise_for_status()soup BeautifulSoup(response.content, html.parser)title soup.find(h1, class_article-title).textauthor soup.find(span, class_article-author).textdate soup.find(span, class_article-date).textcontent soup.find(div, class_article-content).textreturn {title: title,author: author,date: date,content: content}except requests.exceptions.RequestException as e:print(f请求失败: {e}重试 {attempt 1} 次...)time.sleep(2 ** attempt) # 指数退避算法return None# 爬取文章列表页的函数 def fetch_articles_from_page(page):url f{base_url}{page}for attempt in range(max_retries):try:response requests.get(url)response.raise_for_status()articles []soup BeautifulSoup(response.content, html.parser)links soup.find_all(a, class_article-link)for link in links:article_url link[href]article fetch_article(article_url)if article:articles.append(article)return articlesexcept requests.exceptions.RequestException as e:print(f请求失败: {e}重试 {attempt 1} 次...)time.sleep(2 ** attempt) # 指数退避算法return []# 保存数据到CSV文件 def save_to_csv(articles, filename):with open(filename, w, newline, encodingutf-8) as csvfile:fieldnames [title, author, date, content]writer csv.DictWriter(csvfile, fieldnamesfieldnames)writer.writeheader()for article in articles:writer.writerow(article)# 主程序 if __name__ __main__:all_articles []for page in range(1, 6): # 假设要爬取前5页articles fetch_articles_from_page(page)all_articles.extend(articles)save_to_csv(all_articles, news_articles.csv)print(新闻数据已保存到 news_articles.csv) 代码解释: 错误处理: 使用try-except块捕获请求异常并打印错误信息。重试机制: 使用for循环和指数退避算法time.sleep(2 ** attempt)实现重试机制。 定时任务 为了定期运行爬虫可以使用系统的定时任务工具如Linux的cron或Windows的任务计划程序。这里以cron为例介绍如何定期运行爬虫。 步骤1编写爬虫脚本 假设我们已经编写好了一个爬虫脚本news_spider.py。 步骤2配置cron任务 打开终端输入crontab -e编辑定时任务。添加以下内容每天凌晨2点运行爬虫脚本 0 2 * * * /usr/bin/python3 /path/to/news_spider.py 代码解释: 定时配置: 0 2 * * *表示每天凌晨2点运行。运行脚本: 指定Python解释器和爬虫脚本的路径。 性能优化 为了提高爬虫的性能和效率可以采用以下优化策略 并发和多线程: 使用多线程或异步编程加速爬取速度。减少重复请求: 使用缓存或数据库存储已爬取的URL避免重复请求。优化解析速度: 使用更高效的HTML解析库如lxml。 示例使用多线程优化爬虫 import concurrent.futures import requests from bs4 import BeautifulSoup import csv# 文章列表页URL模板 base_url http://news.example.com/page/ max_workers 5 # 最大线程数# 爬取文章详情的函数 def fetch_article(url):try:response requests.get(url)response.raise_for_status()soup BeautifulSoup(response.content, html.parser)title soup.find(h1, class_article-title).textauthor soup.find(span, class_article-author).textdate soup.find(span, class_article-date).textcontent soup.find(div, class_article-content).textreturn {title: title,author: author,date: date,content: content}except requests.exceptions.RequestException as e:print(f请求失败: {e})return None# 爬取文章列表页的函数 def fetch_articles_from_page(page):url f{base_url}{page}try:response requests.get(url)response.raise_for_status()soup BeautifulSoup(response.content, html.parser)links soup.find_all(a, class_article-link)article_urls [link[href] for link in links]return article_urlsexcept requests.exceptions.RequestException as e:print(f请求失败: {e})return []# 主程序 if __name__ __main__:all_articles []with concurrent.futures.ThreadPoolExecutor(max_workersmax_workers) as executor:# 爬取前5页的文章URLarticle_urls []for page in range(1, 6):article_urls.extend(fetch_articles_from_page(page))# 并发爬取文章详情future_to_url {executor.submit(fetch_article, url): url for url in article_urls}for future in concurrent.futures.as_completed(future_to_url):article future.result()if article:all_articles.append(article)# 保存数据到CSV文件save_to_csv(all_articles, news_articles.csv)print(新闻数据已保存到 news_articles.csv) 代码解释: 并发爬取文章详情: 使用concurrent.futures.ThreadPoolExecutor实现多线程并发爬取文章详情。优化爬取速度: 使用多线程提高爬取速度。 结论 通过错误处理与重试机制、定时任务和性能优化可以显著提高爬虫的稳定性和效率。本文详细介绍了这些维护与优化技术帮助我们编写高效稳定的爬虫程序。
http://www.hkea.cn/news/14559403/

相关文章:

  • 建网站上海营销推广渠道有哪些
  • 自己做网站怎么做wordpress进行分类目录搜索
  • 重庆营销网站建设公司排名电影网-个人网站建设论文
  • 品牌网站建设优化公司怎么建立一个网站卖东西
  • 北京个人网站制作小程序开发平台排行
  • wordpress成品网站免费芯片最新消息
  • 晋城网站制作公司好用的crm系统有哪些
  • 宁波公司网站建立西安网络优化哪家好
  • 网站开发用什么语言最多系统花钱做任务的小说魅网站
  • 网站的运营模式门户网站 需求
  • 海城百度公司 海城网站建设广东深圳房价
  • 做网站负责人有法律风险吗新共享项目加盟代理
  • 网站的跟目录淘客 wordpress 数据
  • 网站备案号在哪作风建设提升年活动网站
  • 池州网站建设兼职设计网装修
  • 如何建设一个简单的公司网站jsp可以做网站吗
  • 平面设计好的网站wordpress 删除 分类存档
  • .net网站开发书如何建设百度网站
  • 坪山网站建设多少钱百度帐号登录
  • 河南平台网站建设制作网站登录界面模板html
  • 静安做网站公司wordpress春菜
  • 网站跳出率高精品课程网站设计报告
  • wordpress媒体库播放器seo需要会什么
  • 网站的三种基本类型网上银行入口
  • 网站建设的展望 视频化妆品网站设计模板
  • 沈阳市做网站电话网站建设欧美
  • 深度网营销型网站建设公司怎么样梁山专做网站的公司
  • 如何建设网站步骤给公司做网站需要华多少钱
  • 没有网站做APP兰甘肃网站建设
  • 广州做网站公司培训做性的网站