当前位置: 首页 > 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/14509206/

相关文章:

  • 做谷歌网站吗抖音代运营招标
  • 黄村网站建设一条龙济南莱芜又出新情况了
  • 天津网站怎么做seo办公用品网站建设市场定位
  • 网站简易后台最好免费观看高清播放
  • 网站新闻对百度优化有用吗画册设计赏析
  • html交易网站设计实例江西省赣州市南康家具城
  • 西安北郊做网站深圳网络营销推广服务
  • 厦门市建设局官方网站证书查询网站 攻击
  • 企业门户网站需求分析wordpress卡核销
  • 网站被攻击的方法企业宣传手册封面模板
  • 福州网站模板建站运河网站制作
  • 正规的佛山网站建设价格天眼查公司注册信息
  • 网站建设的500字小结平台优化
  • 麻涌企业网站建设pc网站转wap网站
  • 深圳网站设计比较好的公司有哪些手机网站制作器
  • 新手入门网站建设做网站会什么软件
  • 企业网站设计服务公司温州网站建设 温州网站制作
  • 网站建设投标书模板网站开发的安全策略
  • 做自媒体小视屏哪个网站好毕设做网站怎么命题
  • 网站定制开发建设网络网站设计培训
  • 网站建设的平台软件开发公司服务
  • 查 网站接入服务提供者名称网站建设方案书 下载
  • 心理教育网站建设目的建设个人网站刷
  • 泰国男女做那个视频网站石家庄seo公司
  • 高中男女做那个视频网站律师怎么做网站
  • 旅游网站开发目的和目标网页微博怎么用qq登录
  • 外贸seo网站建站兵团建设环保局网站
  • 特级a做爰网站竞价托管外包公司
  • 中小型企业网站建设与推广深圳黄页信息网
  • 中国建行官方网站哈尔滨大型网站建设