用python实现的下载整个网站工具。

核心流程很简单:

1. 输入网站地址

2. url,得到响应的内容。

3. 根据响应的http报文头,如果类型为html, 则从第4步开始执行。如果是其它类型,则从第6步执行。

4. 提取html中href和src属性值。

5. 将提取到的url,加入下载队列中。如果url已经存在于下载队列中,则丢弃它。

6. 再然后打开url队列中下一个url。

7.继续循环执行第2步,知道url队列中的url处理完为止。

这个步骤看起来很简单,但是里面很多细节要处理半天。

url的各种类型,怎么给后缀有问号的url命名。

目前这个程序中有一处问题是:

1 打开url时,可能会阻塞到一处执行不下去。这个需要研究一下urllib.request

2 还有在url队列长度庞大时,多线程下载速度回更快。

3 英文注释不知道有多少错误。因为写注释时,要是用中文,需要不停来回切换输入法,所以就使用英文。

而目前的程序部支持多线程,日后再完善。

如果有同学有兴趣完善,非常欢迎。

个人邮箱:369806726@qq.com

python下载整个网站_python 下载整个网站 | 学步园相关推荐

  1. python的numpy教程_python numpy 基础教程 | 学步园

    1.Numpy是什么 很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过nu ...

  2. python桌面快捷图标_python 创建桌面快捷方式 | 学步园

    首先得安装 ActiveState ActivePython  . 因为这个中带了 winshell 库 from os import path import winshell #---------- ...

  3. php 下载文件 类库,thinkphp 文件下载 文件下载php | 学步园

    THinkPHP1.5中文件的下载 用到的系统类库文件是Http.class.php,位于ThinkPHP\Lib\ORG\Net目录下,类名Http,其中有静态方法 static function ...

  4. python导入哨兵数据_Python 下载哨兵Sentinel数据(Sentinel-1~3)

    哨兵数据目前应用广泛,空间分辨.光谱分辨率都比较高.目前数据下载部分包括官网和Python程序下载. 其中哨兵1和2数据下载网上已经有非常详细的记录,链接如下:Python中使用sentinelsat ...

  5. python 秒杀12306课程_Python攻破12306网站,实现2020最强抢票模式!

    python版本支持 2.7.10 - 2.7.15 依赖库 依赖若快 若快注册地址: 推荐用若快,打码兔平台已经关闭 项目依赖包 requirements.txt 安装方法-Windows: 安装方 ...

  6. python资源网站_Python 博客网站资源

    # Python 博客网站资源 * **本人编写的 Python 系列文章** 本草根编写的 Python 文章,里面有各种例子代码 传送门: [Gitbook](https://www.readwi ...

  7. python程序网站_Python程序到网站的应用

    好吧,可能很难给你一个好的建议,因为你的项目的描述相当模糊--究竟什么是"50mb的python分级间隔记忆体图片和文本程序评级系统"???:)-但我将试着概述一下您列出的选项之间 ...

  8. python下载加密视频_Python下载未加密的m3u8文件(流媒体文件)

    很多时候我们用手机浏览器缓存视频时发现缓存下来的文件后缀是.m3u8格式的,按文件目录找过去发现是一个几十K大小的系统不可读的文件,那我们缓存下来的文件去哪儿了呢? 其实.m3u8文件就相当于一个协议 ...

  9. python中文下载官网_python下载|python 64位 v3.7.3 官方中文最新版 - 软件下载 - 绿茶软件园|33LC.com...

    python 64位是款面向对象的编程语言.python 64位具有非常多的优点,支持交互式运行.支持图形方式运行.支持模块和包.支持拓展,支持各类函数库,是款即译式的.互动的编程语言,是非常受程序员 ...

最新文章

  1. JavaScript专题之模拟实现call和apply
  2. git 查看公共commit_git使用点滴:如何查看commit的内容
  3. leetcode 382. Linked List Random Node | 382. 链表随机节点(Java)
  4. ninja: error: 'LIBSOUNDIO_LIB-NOTFOUND', needed by 'bin/k4aviewer', missing and no known rule to mak
  5. Docker是传统的应用发布管理的终结者么?
  6. Python语法教程-基础语法01
  7. Matlab 2020b安装教程
  8. 【eoeAndroid社区索引】android 条形码的知识汇总
  9. 苹果谷歌微软薪酬大揭秘,最高320万元!
  10. CMYK, RGB颜色值对照表
  11. php批量查qq号码是否冻结,PHP批量检查网站的sitemap是否存在
  12. java五子棋人机对战_java swing人机对战五子棋
  13. Linux基础(三)
  14. 华为初面+综合面试(Java技术面)附上面试题
  15. 历史二—— 浮点运算与数组下标寻址
  16. Wireshark 设置中文
  17. ipad接受airdrop_如何在iPhone,iPad和Mac上使用AirDrop即时共享文件
  18. 程序员月薪8000,丢人吗?
  19. 信息安全中常见的网络知识(一)网络基本概念
  20. 阿里云短视频SDK for iOS —— (二)静态与动态贴纸拍摄

热门文章

  1. KAV/KIS 6.0 7.0 永久免费激活方法
  2. linuxQQ总是掉线问题
  3. JDBC原理及使用步骤
  4. python列表去重的九种实现方式
  5. Sql语句(添加列,修改列,删除列)
  6. matlab8级量化信号,编程题-8级均匀PCM量化器-路过的朋友们,帮忙看下。 – MATLAB中文论坛...
  7. ionic混合app开发——ionic-native
  8. 如何成为一个好的售后技术支持工程师?
  9. linux下ls -l命令(即ll命令)查看文件的显示结果分析
  10. WRF-4.0如何运行