最近研究开源飞行模拟器,想将其世界地景全部下载下来。一个个手动下载太麻烦,于是想先用python的requests和Beautiful Soup组件获取地景链接,再以每行一个地景链接写入文本文档,最后使用axel多线程自动下载每一个地景包。
基础知识
requests组件
Requests是一个Python HTTP库,在Apache 2许可证下发布。该项目的目标是使HTTP请求更简单,更人性化。
下面是示例代码:
1 | >>> import requests |
Beautiful Soup组件
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。
Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml。
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment。
- Tag 对象与XML或HTML原生文档中的tag相同,有最重要的属性: name和attributes。
- BeautifulSoup 对象表示的是一个文档的全部内容,但并不是真正的HTML或XML的tag,所以它没有name和attribute属性。
- Beautiful Soup用 NavigableString 类来包装tag中的字符串。
- Comment 对象是一个特殊类型的 NavigableString 对象:
下面是BeautifulSoup的一个简单示例。
1 | from bs4 import BeautifulSoup |
axel工具
axel是Linux下一个不错的HTTP/ftp高速下载工具。支持多线程下载、断点续传,且可以从多个地址或者从一个地址的多个连接来下载同一个文件。适合网速不给力时多线程下载提高下载速度。
axel语法:
1 | axel [options] url1 [url2] [url...] |
axel选项:
1 | --max-speed=x , -s x 最高速度x |
代码实现
获取地景链接
1 | import requests |
下载世界地景
1 | for line in $(cat sceneLink.txt) |
参考链接
- requests快速上手,by requests.
- Python 基础教程, by runoob.
- Python之父教你写main()函数,by 编程派.
- Beautiful Soup 4.2.0 文档,by BeautifulSoup.
- FlightGear安装飞机和场景的方法,by jack huang.
- axel命令,by Linux命令大全.