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

泰州网站建设专业团队自建网站去除html

泰州网站建设专业团队,自建网站去除html,自己做的网站怎么才有用户访问,网站群集约化建设通知并发编程在爬虫中的应用 之前的课程#xff0c;我们已经为大家介绍了 Python 中的多线程、多进程和异步编程#xff0c;通过这三种手段#xff0c;我们可以实现并发或并行编程#xff0c;这一方面可以加速代码的执行#xff0c;另一方面也可以带来更好的用户体验。爬虫程…并发编程在爬虫中的应用 之前的课程我们已经为大家介绍了 Python 中的多线程、多进程和异步编程通过这三种手段我们可以实现并发或并行编程这一方面可以加速代码的执行另一方面也可以带来更好的用户体验。爬虫程序是典型的 I/O 密集型任务对于 I/O 密集型任务来说多线程和异步 I/O 都是很好的选择因为当程序的某个部分因 I/O 操作阻塞时程序的其他部分仍然可以运转这样我们不用在等待和阻塞中浪费大量的时间。 下面我们以爬取“360图片”网站的图片并保存到本地为例为大家分别展示使用单线程、多线程和异步 I/O 编程的爬虫程序有什么区别同时也对它们的执行效率进行简单的对比。 “360图片”网站的页面使用了 Ajax 技术这是很多网站都会使用的一种异步加载数据和局部刷新页面的技术。简单的说页面上的图片都是通过 JavaScript 代码异步获取 JSON 数据并动态渲染生成的而且整个页面还使用了瀑布式加载一边向下滚动一边加载更多的图片。我们在浏览器的“开发者工具”中可以找到提供动态内容的数据接口如下图所示我们需要的图片信息就在服务器返回的 JSON 数据中。 例如要获取“美女”频道的图片我们可以请求如下所示的URL其中参数ch表示请求的频道后面的参数值beauty就代表了“美女”频道参数sn相当于是页码0表示第一页共30张图片30表示第二页60表示第三页以此类推。 https://image.so.com/zjl?chbeautysn0单线程版本 通过上面的 URL 下载“美女”频道共90张图片。 example04.py - 单线程版本爬虫import osimport requestsdef download_picture(url):filename url[url.rfind(/) 1:]resp requests.get(url)if resp.status_code 200:with open(fimages/beauty/{filename}, wb) as file:file.write(resp.content)def main():if not os.path.exists(images/beauty):os.makedirs(images/beauty)for page in range(3):resp requests.get(fhttps://image.so.com/zjl?chbeautysn{page * 30})if resp.status_code 200:pic_dict_list resp.json()[list]for pic_dict in pic_dict_list:download_picture(pic_dict[qhimg_url])if __name__ __main__:main()在 macOS 或 Linux 系统上我们可以使用time命令来了解上面代码的执行时间以及 CPU 的利用率如下所示。 time python3 example04.py 下面是单线程爬虫代码在我的电脑上执行的结果。 python3 example04.py 2.36s user 0.39s system 12% cpu 21.578 total这里我们只需要关注代码的总耗时为21.578秒CPU 利用率为12%。 多线程版本 我们使用之前讲到过的线程池技术将上面的代码修改为多线程版本。 example05.py - 多线程版本爬虫import os from concurrent.futures import ThreadPoolExecutorimport requestsdef download_picture(url):filename url[url.rfind(/) 1:]resp requests.get(url)if resp.status_code 200:with open(fimages/beauty/{filename}, wb) as file:file.write(resp.content)def main():if not os.path.exists(images/beauty):os.makedirs(images/beauty)with ThreadPoolExecutor(max_workers16) as pool:for page in range(3):resp requests.get(fhttps://image.so.com/zjl?chbeautysn{page * 30})if resp.status_code 200:pic_dict_list resp.json()[list]for pic_dict in pic_dict_list:pool.submit(download_picture, pic_dict[qhimg_url])if __name__ __main__:main()执行如下所示的命令。 time python3 example05.py代码的执行结果如下所示 python3 example05.py 2.65s user 0.40s system 95% cpu 3.193 total异步I/O版本 我们使用aiohttp将上面的代码修改为异步 I/O 的版本。为了以异步 I/O 的方式实现网络资源的获取和写文件操作我们首先得安装三方库aiohttp和aiofile命令如下所示。 pip install aiohttp aiofileaiohttp 的用法在之前的课程中已经做过简要介绍aiofile模块中的async_open函数跟 Python 内置函数open的用法大致相同只不过它支持异步操作。下面是异步 I/O 版本的爬虫代码。 example06.py - 异步I/O版本爬虫import asyncio import json import osimport aiofile import aiohttpasync def download_picture(session, url):filename url[url.rfind(/) 1:]async with session.get(url, sslFalse) as resp:if resp.status 200:data await resp.read()async with aiofile.async_open(fimages/beauty/{filename}, wb) as file:await file.write(data)async def fetch_json():async with aiohttp.ClientSession() as session:for page in range(3):async with session.get(urlfhttps://image.so.com/zjl?chbeautysn{page * 30},sslFalse) as resp:if resp.status 200:json_str await resp.text()result json.loads(json_str)for pic_dict in result[list]:await download_picture(session, pic_dict[qhimg_url])def main():if not os.path.exists(images/beauty):os.makedirs(images/beauty)loop asyncio.get_event_loop()loop.run_until_complete(fetch_json())loop.close()if __name__ __main__:main()执行如下所示的命令。 time python3 example06.py代码的执行结果如下所示 python3 example06.py 0.82s user 0.21s system 27% cpu 3.782 total总结 通过上面三段代码执行结果的比较我们可以得出一个结论使用多线程和异步 I/O 都可以改善爬虫程序的性能因为我们不用将时间浪费在因 I/O 操作造成的等待和阻塞上而time命令的执行结果也告诉我们单线程的代码 CPU 利用率仅仅只有12%而多线程版本的 CPU 利用率则高达95%单线程版本的爬虫执行时间约21秒而多线程和异步 I/O 的版本仅执行了3秒钟。另外在运行时间差别不大的情况下多线程的代码比异步 I/O 的代码耗费了更多的 CPU 资源这是因为多线程的调度和切换也需要花费 CPU 时间。至此三种方式在 I/O 密集型任务上的优劣已经一目了然当然这只是在我的电脑上跑出来的结果。如果网络状况不是很理想或者目标网站响应很慢那么使用多线程和异步 I/O 的优势将更为明显有兴趣的读者可以自行试验。
http://www.sadfv.cn/news/133446/

相关文章:

  • 高台网站建设cms网站开发框架
  • 网站建设最低要求加盟教育培训哪个好
  • 英文网站开发施工企业财务经理年终总结
  • 兰溪市网站建设公司整合wordpress和discuz
  • 月夜直播视频免费观看简述seo
  • 高端开发网站哪家专业单位邮箱怎么申请163邮箱
  • 途牛网网站建设评价宜城营销型网站套餐
  • 福州网站建设报价建设网站的网络公司
  • 固安做网站的公司怎么建立自己的网站平台
  • 网站模板侵权如何处理网站开发课程百度云
  • 网页模板网站生成郑州企业的网站建设
  • 网站详情一般是什么公司做网站建设 源代码归属
  • 游戏的网站策划应该怎么做让别人做网站的话术
  • 郑州高新区做网站开发的公司招商加盟网站模板html
  • 网站建设计划书下载室内设计平面图立面图效果图
  • 0基础 网站建设在哪几个网站里可以做淘客
  • 石家庄网站建设q.479185700棒前端网站开发上线的流程
  • 百度站长网站文件验证百度搜不到的网站
  • 电商网站开发文字教程在什么网站做推广最好
  • 不锈钢网站样板太原广告传媒有限公司
  • 行业网站推广方案实验设计方案怎么写模板
  • 上海网站建设设计百度总部在哪里
  • 厦门网络公司网站开发西安网站开发服务多少钱
  • 如何网站防止采集网站建设服务网络服务
  • 网站建设前期策划网业邮箱登录
  • 专做实习生招聘的网站网页设计图片向左移是什么代码
  • 做网站例子图片描述专业的论坛网站建设
  • 如何搭建内网网站百度网址怎么写
  • 佛山自定义网站建设搜索关键词排名提升
  • 企业网站优化技巧app网站建站系统下载