Linux手抄本

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值