Linux 下载文件到本地, 上传文件
sz命令发送文件到本地:
sz filename
rz命令本地上传文件到服务器:
rz
执行该命令后,在弹出框中选择要上传的文件即可。 说明:打开SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录。
//可以用来查看分区的文件系统
df -T
df命令可以显示目前所有文件系统的可用空间及使用情形,请看下列这个例子:
df -h
//查看系统中文件的使用情况
df -h
//查看当前目录下各个文件及目录占用空间大小
du -sh *
//方法一:切换到要删除的目录,删除目录下的所有文件
rm -f *
//方法二:删除logs文件夹下的所有文件,而不删除文件夹本身
rm -rf log/*
// 查看文件大小
qz@qz-PC:/tmp/mozilla_qz0$ ls -lht firefox-67.0.tar.bz2
CentOS 7.2 64 位 常用命令
CentOS 7.2 64 位 常用命令
=Astart
创建目录
使用 mkdir 命令创建目录
mkdir $HOME/testFolder
切换目录
使用 cd 命令切换目录
cd $HOME/testFolder
使用 cd …/ 命令切换到上一级目录
cd …/
移动目录
使用 mv 命令移动目录
mv $HOME/testFolder /var/tmp
删除目录
使用 rm -rf 命令删除目录
rm -rf /var/tmp/testFolder
查看目录下的文件
使用 ls 命令查看 [/etc] 目录下所有文件和文件夹
ls /etc
/etc 目录默认是 *nix 系统的软件配置文件存放位置
文件操作
任务时间:5min ~ 10min
创建文件
使用 touch 命令创建文件
touch ~/testFile
执行 ls 命令, 可以看到刚才新建的 testFile 文件
ls ~
复制文件
使用 cp 命令复制文件
cp ~/testFile ~/testNewFile
删除文件
使用 rm 命令删除文件, 输入 y 后回车确认删除
rm ~/testFile
查看文件内容
使用 cat 命令查看 .bash_history 文件内容
cat ~/.bash_history
过滤, 管道与重定向
任务时间:5min ~ 10min
过滤
过滤出 /etc/passwd 文件中包含 root 的记录
grep ‘root’ /etc/passwd
递归地过滤出 /var/log/ 目录中包含 linux 的记录
grep -r ‘linux’ /var/log/
管道
简单来说, Linux 中管道的作用是将上一个命令的输出作为下一个命令的输入, 像 pipe 一样将各个命令串联起来执行, 管道的操作符是 |
比如, 我们可以将 cat 和 grep 两个命令用管道组合在一起
cat /etc/passwd | grep ‘root’
过滤出 /etc 目录中名字包含 ssh 的目录(不包括子目录)
ls /etc | grep ‘ssh’
重定向
可以使用 > 或 < 将命令的输出重定向到一个文件中
echo ‘Hello World’ > ~/test.txt
运维常用命令
任务时间:5min ~ 10min
ping 命令
对 cloud.tencent.com 发送 4 个 ping 包, 检查与其是否联通
ping -c 4 cloud.tencent.com
netstat 命令
netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等
列出所有处于监听状态的tcp端口
netstat -lt
查看所有的端口信息, 包括 PID 和进程名称
netstat -tulpn
ps 命令
过滤得到当前系统中的 ssh 进程信息
ps aux | grep ‘ssh’
=Aend
学习 Requests 的基本使用方法完成简单的网页数据获取,实验使用 Python 3 环境进行
学习 Requests
=Bstart
没有规矩,不成方圆–Robots 协议
任务时间:10min ~ 15min
robots.txt
在了解爬虫之前,我们有必要了解 robots 协议。
·--------------------------------------------------------
*以下部分内容来自维基百科 robots.txt 词条
robots.txt(统一小写)是一种存放于网站根目录下的 ASCII 编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的 URL 是大小写敏感的,所以 robots.txt 的文件名应统一为小写。robots.txt 应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的 robots.txt,或者使用 robots 元数据(Metadata,又称元数据)。
这个协议也不是一个规范,而只是约定俗成的,有些搜索引擎会遵守这一规范,而其他则不然。通常搜索引擎会识别这个元数据,不索引这个页面,以及这个页面的链出页面。
·---------------------------------------------------
在使用爬虫过程中,我们应尽可能的遵循 robots 协议,在非学习交流与为目的的场合严格遵循其规定。
同时,我们在爬取数据的过程中应该注重服务器负载,避免给服务器带来较大压力,很多小众网站服务器工作能力并没有我们想象的那么好,数个并发爬虫就能使服务器宕机。
对于设计企业数据,网站所有者隐私的信息我们应尽可能避免爬取,换位思考,如果你是网站搭建者,你也不希望你的数据被轻松盗用吧。
Robots 协议暂且介绍这么多,现在,点击下一步,让我们进入 Python 爬虫的世界吧
Requests 库入门
任务时间:10min ~ 20min
从简单的例子开始
运行Python命令行
请用 ubuntu 用户在用户目录下进入 Python3 环境
cd ~
python3
当看到>>>的输入提示符时表示进入成功,请注意确认版本为 3.X 版本
导入requests库
之后的一些内容都在Python命令行中完成
import requests
定义网址为字符串变量
targetUrl = “http://www.baidu.com”
现在请跟随示例完成,之后您可以自行爬取其他页面
进行网页爬取
res = requests.get(targetUrl)
查看返回码
res.status_code
如果是200那么我们继续,如果不是、、、额、、、再试一次?
查看网页返回的字符集类型
res.encoding
你会发现得到的结果是 ISO-8859-1 然而百度真的是这样的吗?
尝试输出爬取结果
res.text
发现了什么?中文乱码,没错,很显然百度用的不是 ISO-8859-1 的字符集
查看爬取内容的二进制数据
res.content
你觉得是什么? utf-8 !没错,那么让我们继续
自动判断字符集类型
res.apparent_encoding
那么我们尝试直接更改 res.encoding 一项
更改字符集声明
res.encoding = res.apparent_encoding
再次尝试输出
res.text
现在有没有看到熟悉的东西了呢?我们这个例子就到这里
如果没有成功,请使用组合件 Ctrl+D 退出 Python命令行 ,查看教程检查器给出的提示,再来一次吧
退出Python命令行检查器才能正确工作!!!
requests 库提供的方法
requests.request() 构造一个请求
requests.request(method, url, **kwargs)
**kwargs 的含义我们暂且放一放
requests.get() 获取 HTML 网页,类似于 HTTP 的 GET
requests.get(url, params=None, **kwargs)
Response = requests.get(url)
Response 这里是 requests 返回的一个对象,我们之后会具体讲解
requests.head() 获取 HTML 网页头信息,类似于 HTTP 的 HEAD
requests.head(url, **kwargs)
requests.post() 向 HTML 网页提交 POST 请求,类似于 HTTP 的 POST
requests.post(url, data=None, json=None, **kwargs)
requests.put() 向 HTML 网页提交 PUT 请求,类似于 HTTP 的 PUT
requests.put(url, data=None, **kwargs)
requests.patch() 向 HTML 网页提交局部修改请求,类似于 HTTP 的 PATCH
requests.patch(url, data=None, **kwargs)
requests.delete() 向 HTML 页面提交删除请求,类似于 HTTP 的 DELETE
requests.delete(url, **kwargs)
Response 返回类型的基本属性
稍安勿躁,在进行下一步实操之前,让我们再了解一下之前我们涉及到的 Response 的部分基本属性
.status_code
HTML 返回的状态码,你可以参考百度百科上的内容了解具体的含义
.text
内容的字符串形式,简而言之,就是网页上的内容
.encoding
从 HTTP header中获得响应内容编码方式,如果在 header 里没有声明,那么将会是 ISO-8859-1
.apparent_encoding
从内容中分析出的响应内容编码方式,在执行过程中会对各种编码的概率进行计算,给出最可能的编码类型,注意在程序中使用它会导致程序速度变慢。
.content
html 内容的二进制显示,对于图片这样的非文本文件,二进制的输出是必要的
raise_for_status()
这是我们上一个程序示例中没有出现的内容,但它很重要
如果不是 200,产生异常
网络传输存在着不确定性,发现并及时处理异常非常重要
对新学的东西,马上来一次实践吧
重新打开 Python 命令行
cd ~
python3
导入 requests 库,这次我们爬取一个不存在的页面
targetUrl = “https://cloud.tencent.com/dsadfas”
res = requests.get(targetUrl)
res.raise_for_status()
不出意外的话你就能看到 Python 的报错信息
值得我们注意的是这里是产生中断的报错,而不是一个警告,通过 try…except… 我们可以实现对 http 请求错误的处理。
练习:http 状态码错误处理
本部分需要一定的 Python 基础,如果你觉得困难,下面会给出参考程序段,试着看懂之后完成你自己的程序吧。
请使用 Python 完成程序,要求如下:
1.爬取的网址由用户手动输入
2.检查是否有错误产生别给出错误提示
3.请使用 raise_for_status() 函数
示例程序段
这里只给出思路,如果你有能力完成,那么请忽略本部分内容
示例代码:/home/ubuntu/demo1.py
import requests
targetUrl = input(“请输入页面url:”)
try:
res = requests.get(targetUrl)
res.raise_for_status()
print(“成功”)
except:
print(“失败或HTTP状态非200”)
在实战中学习:获取亚马逊商品数据
任务时间:10min ~ 20min
本部分我们通过爬取亚马逊商品数据学习 requests 请求的部分参数的使用
小试牛刀
现在一起来尝试打开亚马逊图书的任意一本,试着用 python 爬取这个页面
python3
import requests
url = “https://www.amazon.cn/dp/B076789VTJ/”
res = requests.get(url)
print(res.status_code)
这里返回的 status_code 是503,不急,让我们先看看页面内容
res.encoding = res.apparent_encoding
print(res.text)
页面的内容可能不同的人不同时间会有不同的结果,但会是:
*输入验证码才能继续
*提示访问出错
问题分析与处理
如果你对html请求熟悉,那么一定知道 user-agent 这玩意儿,它标识了访问者浏览器的类型,Python 很诚实的告诉网站服务器它是一个 Python 程序,然而如果我们希望获得其中的内容就需要更改这个 user-agent。
在之前基础上这么尝试:
h = {
“user-agent”:“Mozilla/5.0 (MSIE 10.0; Windows NT 6.1; Trident/5.0)”
}
#这里用的是IE的user-agent
res = requests.get(url,headers = h)
print(res.status_code)
好的,状态码是200了,请求成功
你还可以尝试把页面的部分进行输出,看一看是不是你需要的内容。一个小提示,在 IDE 中尽量避免一次性输出过多字符,但在命令行状态下可以弱化这一点。
小结
http 请求 headers 中包含的信息并不只有 user-agent,很多网站都有反爬的基本策略,有的检查 user-agent,类似于我们之前看到的亚马逊,有的网站会检查 host,refer 等字段,这些内容是否需要确定,如何更改相信有了之前的例子你已经懂了,关于更多这部分的内容不属于本教程的范畴,请自行查阅相关资料。
headers 作为参数传递给 requests 库时,应该使用字典格式,把需要的内容放到字典中,剩下的 requests 会帮你解决。
换个姿势百度一下
任务时间:5min ~ 10min
本部分目标
通过 Python 爬虫获取百度搜索的结果
示例:通过 get 方式传递数据请求
本质上来说示例和练习是相同的,但处理过程有细微差别
分析百度主页,搜索框 id 为 wd,提交目标为 http://www.baidu.com/s
让我们一起构建表单请求来实现搜索吧
示例代码:/home/ubuntu/demo2.py
import requests
url = “http://www.baidu.com/s”
res = requests.get(url,params = {“wd”:“腾讯云”})
res.encoding = res.apparent_encoding
print(res.text[0:1000])
上面示例中给出了请求方式,params作为参数加到url中,如果是data则会加入到请求主体里
练习:直接请求搜索结果
我们观察百度搜索不同关键词时候链接的不同,总结归纳,不难发现都是类似于这样的:
http://www.baidu.com/s?wd=XXX
XXX 是你搜的内容,而其他部分对搜索内容不产生影响,那么我们直接请求这个地址来获取搜索结果,这个练习交给你,试着完成吧。
Requests 库未完待续
任务时间:5min ~ 20min
更多参数
和之前出现过的 headers 类似,还有一些参数是我们所需要的这里给出简要,具体使用请自行尝试。
params : 字典或字节序列,作为参数增加到 url 中
data : 字典、字节序列或文件对象,作为 Request 的内容
json : JSON 格式的数据,作为 Request 的内容
headers : 字典,HTTP 定制头
cookies : 字典或 CookieJar, Request 中的 cookie
auth : 元组,支持 HTTP 认证功能
files : 字典类型,传输文件
timeout : 设定超时时间,秒为单位
proxies : 字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects : True/False,默认为 True,重定向开关
stream : True/False, 默认为 True, 获取内容立即下载开关
verify : True/False, 默认为 True, 认证 SSL 证书开关
cert : 本地 SSL 证书路径
*以上内容来源网络
练习:网络数据爬取
请自行完成你想要完成爬取的网站的数据获取
==Bend