Python
爬虫入门教程
基础知识
什么是HTML、CSS、JavaScript
网页往往采用html+css+js
开发,html
是一门标记语言
如下:
<!- 将下面这句话放入html文件中,-->
<!- 然后浏览器就会将这句话解释为下面那张图片,-->
<!- 这个就是浏览器渲染的功能-->
<!- 这里我们知道了一个词——浏览器的渲染 -->
<!- 并且我们发现,浏览器会在下面这个网址 自动 -->
<!- 把这张图片下载下来,然后渲染给我们看,这在我们之后抓包会有用 -->
<img src="https://raw.githubusercontent.com/MinzhiYoyo/ImageHost/main/202204052019260.png"
width="300px">
什么是请求,什么是响应
请求:就是前端向后端发送一个请求,如请求我的账户浏览记录
响应:就是后端向前端发送一个响应,你请求你的账户浏览器记录,那么我把记录发给你,叫做响应
JavaScript
中有请求,浏览器渲染到其中的请求,就会向后端发送请求
什么是GET
,什么是POST
这个是两种请求方式而已,get
直接把请求数据放在链接里面,post
一般以则不是
什么是Cookie
曲奇饼干?不是
打个比方,大家申请出校,需要在手机上申请,然后今天一天都可以通过刷脸进出校园
那么,在手机上申请相当于告诉学校后端,你请求了进出校权限。也相当于,你在网页上登录账户密码
然后,你一天可以通过刷脸,这个刷脸就是cookie
,今天进出校园不需要再申请了
这个就是cookie
的作用,最常见的就是,不需要每次点开一个页面都进行账户密码登录
Python
基本语法
这个本该大家自己去学习的,但是这里说好基础入门,就简单提一点点
a = 1
b = 2
# if结构
if a > b:print("a大于b")
else:print("a不大于b")# while循环
while True:print("这里面是while循环")# 列表和字典
m = ["hello", 2, 4.5] # 列表支持不同数据类型,并且可以随意扩充和删减
n = { # 字典里面每个元素都是 键值:值 组成"key1": 3,"key3": "hello"
}
m[0] ## 索引到第0个元素,即 "hello"
n["key1"] ## 索引到键值为"key1"的值,即 3
什么是抓包
打个比方:你要向某人发一条数据,我在你们之间截获了或者记录了你们的数据,这个叫做抓包
#mermaid-svg-L7zRYf14tF86tU3b {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-L7zRYf14tF86tU3b .error-icon{fill:#552222;}#mermaid-svg-L7zRYf14tF86tU3b .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-L7zRYf14tF86tU3b .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-L7zRYf14tF86tU3b .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-L7zRYf14tF86tU3b .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-L7zRYf14tF86tU3b .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-L7zRYf14tF86tU3b .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-L7zRYf14tF86tU3b .marker{fill:#333333;stroke:#333333;}#mermaid-svg-L7zRYf14tF86tU3b .marker.cross{stroke:#333333;}#mermaid-svg-L7zRYf14tF86tU3b svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-L7zRYf14tF86tU3b .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-L7zRYf14tF86tU3b .cluster-label text{fill:#333;}#mermaid-svg-L7zRYf14tF86tU3b .cluster-label span{color:#333;}#mermaid-svg-L7zRYf14tF86tU3b .label text,#mermaid-svg-L7zRYf14tF86tU3b span{fill:#333;color:#333;}#mermaid-svg-L7zRYf14tF86tU3b .node rect,#mermaid-svg-L7zRYf14tF86tU3b .node circle,#mermaid-svg-L7zRYf14tF86tU3b .node ellipse,#mermaid-svg-L7zRYf14tF86tU3b .node polygon,#mermaid-svg-L7zRYf14tF86tU3b .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-L7zRYf14tF86tU3b .node .label{text-align:center;}#mermaid-svg-L7zRYf14tF86tU3b .node.clickable{cursor:pointer;}#mermaid-svg-L7zRYf14tF86tU3b .arrowheadPath{fill:#333333;}#mermaid-svg-L7zRYf14tF86tU3b .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-L7zRYf14tF86tU3b .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-L7zRYf14tF86tU3b .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-L7zRYf14tF86tU3b .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-L7zRYf14tF86tU3b .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-L7zRYf14tF86tU3b .cluster text{fill:#333;}#mermaid-svg-L7zRYf14tF86tU3b .cluster span{color:#333;}#mermaid-svg-L7zRYf14tF86tU3b div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-L7zRYf14tF86tU3b :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
数据发送者
抓包者
数据接收者
那么我们需要抓什么包呢?抓包的用处在哪呢?
答:我们需要抓取浏览器和后端服务器通信的包;用处是分析他们的数据然后用代码进行伪造数据发送,以便获得和浏览器同样的响应
什么是代理
不进行代理应该是下列图:
#mermaid-svg-bpUgerESfgLC6MMf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bpUgerESfgLC6MMf .error-icon{fill:#552222;}#mermaid-svg-bpUgerESfgLC6MMf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bpUgerESfgLC6MMf .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bpUgerESfgLC6MMf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bpUgerESfgLC6MMf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bpUgerESfgLC6MMf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bpUgerESfgLC6MMf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bpUgerESfgLC6MMf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bpUgerESfgLC6MMf .marker.cross{stroke:#333333;}#mermaid-svg-bpUgerESfgLC6MMf svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bpUgerESfgLC6MMf .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bpUgerESfgLC6MMf .cluster-label text{fill:#333;}#mermaid-svg-bpUgerESfgLC6MMf .cluster-label span{color:#333;}#mermaid-svg-bpUgerESfgLC6MMf .label text,#mermaid-svg-bpUgerESfgLC6MMf span{fill:#333;color:#333;}#mermaid-svg-bpUgerESfgLC6MMf .node rect,#mermaid-svg-bpUgerESfgLC6MMf .node circle,#mermaid-svg-bpUgerESfgLC6MMf .node ellipse,#mermaid-svg-bpUgerESfgLC6MMf .node polygon,#mermaid-svg-bpUgerESfgLC6MMf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bpUgerESfgLC6MMf .node .label{text-align:center;}#mermaid-svg-bpUgerESfgLC6MMf .node.clickable{cursor:pointer;}#mermaid-svg-bpUgerESfgLC6MMf .arrowheadPath{fill:#333333;}#mermaid-svg-bpUgerESfgLC6MMf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bpUgerESfgLC6MMf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bpUgerESfgLC6MMf .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-bpUgerESfgLC6MMf .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-bpUgerESfgLC6MMf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bpUgerESfgLC6MMf .cluster text{fill:#333;}#mermaid-svg-bpUgerESfgLC6MMf .cluster span{color:#333;}#mermaid-svg-bpUgerESfgLC6MMf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bpUgerESfgLC6MMf :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
发送请求
返回响应
前台客户端
后台服务器
代理就是如下:
#mermaid-svg-EoAnsTuq5RTTcMIK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EoAnsTuq5RTTcMIK .error-icon{fill:#552222;}#mermaid-svg-EoAnsTuq5RTTcMIK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EoAnsTuq5RTTcMIK .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-EoAnsTuq5RTTcMIK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EoAnsTuq5RTTcMIK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EoAnsTuq5RTTcMIK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EoAnsTuq5RTTcMIK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EoAnsTuq5RTTcMIK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EoAnsTuq5RTTcMIK .marker.cross{stroke:#333333;}#mermaid-svg-EoAnsTuq5RTTcMIK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EoAnsTuq5RTTcMIK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-EoAnsTuq5RTTcMIK .cluster-label text{fill:#333;}#mermaid-svg-EoAnsTuq5RTTcMIK .cluster-label span{color:#333;}#mermaid-svg-EoAnsTuq5RTTcMIK .label text,#mermaid-svg-EoAnsTuq5RTTcMIK span{fill:#333;color:#333;}#mermaid-svg-EoAnsTuq5RTTcMIK .node rect,#mermaid-svg-EoAnsTuq5RTTcMIK .node circle,#mermaid-svg-EoAnsTuq5RTTcMIK .node ellipse,#mermaid-svg-EoAnsTuq5RTTcMIK .node polygon,#mermaid-svg-EoAnsTuq5RTTcMIK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-EoAnsTuq5RTTcMIK .node .label{text-align:center;}#mermaid-svg-EoAnsTuq5RTTcMIK .node.clickable{cursor:pointer;}#mermaid-svg-EoAnsTuq5RTTcMIK .arrowheadPath{fill:#333333;}#mermaid-svg-EoAnsTuq5RTTcMIK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-EoAnsTuq5RTTcMIK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-EoAnsTuq5RTTcMIK .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-EoAnsTuq5RTTcMIK .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-EoAnsTuq5RTTcMIK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-EoAnsTuq5RTTcMIK .cluster text{fill:#333;}#mermaid-svg-EoAnsTuq5RTTcMIK .cluster span{color:#333;}#mermaid-svg-EoAnsTuq5RTTcMIK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-EoAnsTuq5RTTcMIK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
发送请求
转发请求
返回响应
转发响应
前台客户端
代理服务器
后台服务器
如何伪造呢?
1、一般网站开发者希望我们使用浏览器浏览他们的网站,不希望我们使用代码进行浏览
2、欸,但我就想用代码进行浏览,怎么办呢?
3、那么就需要将我们的代码尽量伪装成浏览器,让后端以为我们是浏览器
4、具体就是抓包,分析数据,用代码发送请求
浏览器抓包
进入调试模式
打开某个浏览器,按下键盘上的F12键,进入调试模式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eXyasxM7-1652950660352)(https://raw.githubusercontent.com/MinzhiYoyo/ImageHost/main/202204052019536.png)]
一般用得到上面四个红圈里面的内容,建议跟我一样,将这个调试界面放到右侧,不然之后找不到对应的按钮(仅代表个人习惯)。
如果是英文的,也不要担心,相信这点英文应该看得懂,看不懂应该也能找到相应位置,还可以自行百度怎么换成中文哦。
- 红圈1、找到页面上的元素分别对应哪句
html
标签
- 红圈2、主要看元素和网络两个
- 红圈3、左边如果是红色表示正在抓包记录,右边是清除已经抓到的包记录
- 红圈4、一般我喜欢直接点选全部这个按钮,其他的是过滤数据的类型
如何寻找数据呢?
我们首先需要伪造成浏览器,发送请求标头,然后分析一下响应的数据,这个就是一个抓包过程啦
听起来是不是很简单呢?
简单 打在公屏上
分析数据
浏览器人性化查看数据
第一张图和第二张图有所区别,多了一个载荷选项,因为第二张图是在百度翻译上面抓的
第二张图发送请求时候带了参数,所以比第一张图多了载荷选项
分析请求标头
这么多的数据,我应该怎么办呢?
User-Agent
:这个相当于浏览器标识,看你是什么浏览器发送的,我们直接用这个就行Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
,这个代表是chrome
浏览器的标识
Referer
:它其实是refer
,就是代表这个网也从哪个网页来的
cookie
:就是cookie
,前面基础知识提到过
请求网址
:就是你向哪个网址发送请求,请求的对象是哪个
查看载荷
如上面第二张图中的请求网址是:
分为前后两部分组成,后面那部分就是载荷了,它是多个字符串参数,然后它是这么个形式:键值=值 组成的
多个字符串参数用&
链接起来,把他人性化一点查看就是这样:字符串参数
POST请求不仅仅只有请求头还有请求数据
下面是百度翻译的post
请求的载荷
上面和get
请求一样,是字符串参数,下面就是表单数据,这个是很重要的一个部分
这些都是基础概念,之后会用到,现在先学学
分析响应数据
响应数据多种多样,常见的有:html
文本,图片文件,表单数据,视频文件等等
其中,图片文件和视频文件等都是二进制格式
html
文本和表单数据是文本格式
一般都需要请求这个,它会告诉浏览器需要渲染什么,如下载哪张图片,下载哪个音频,下载哪个文件等等
我们一般都需要分析一下这个文件
直接以二进制的形式写入本地就相当于下载下来
返回的数据中一般带有我们需要的数据,如翻译的请求,就会把翻译的结果再以表单的形式返回了
代码编写
有了上述的知识,可以进行代码编写,其实完全可以先进行代码编写,然后再去上述补充基本知识,这个顺序可以根据大家喜好来看。
requests
教程
导入requests
包
下载:pip install requests
导入:import requests
emmmmm
怎么说呢,这个好像不如跟着视频里面做一遍,虽然我还没有录视频,但是聪明的你们肯定会上百度吧
requests
包的使用
这个教程顺序可能和网上很多都不一样
import requests as rq
import json
import retool = rq.session() # 这个会返回一个爬虫工具箱,并且它会自动维持cookieverify=False # 设置是否进行SSL验证,一般设置为否
url="https://baidu.com" # 这里请求百度的数据
headers={ # 设置请求头"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/""537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
}
proxies={ # 设置代理"http": None,"https": None
}
params={ # 设置字符串参数}
data={ # 设置请求表单}# 发送get请求,得到get响应
responseGet = tool.get(url=url, params=params, headers=headers, verify=verify, proxies=proxies)
# 发送post请求,得到post响应
responsePost = tool.post(url=url, data=data, headers=headers, verify=verify, proxies=proxies)# 解析响应
# 1、假如响应是文本数据,如html文本
response = responseGet
response.content # 这个是内容,是二进制编码
response.content.decode("gbk") # 使用gbk解码,不加参数就是utf-8解码
# 2、假如响应是图片数据
with open("1.png", "wb") as f:f.write(response.content) # 直接以二进制写入文件
# 3、假如响应是表单数据
dat = json.loads(response.content.decode()) # 返回的就是一个字典数据了
正则表达式简单用法
爬虫中的正则表达式一般会比较简单
import re # 导入正则表达式包
# 假如有下列字符串需要被匹配
# str1 = "<link href="https://stacdn.proginn.com/plugin/swiper/swiper.min.css?version=4.30.2"
# rel="stylesheet" type="text/css">"
# 其中href中的是我们需要的那么
html = response.content.decode()
restr = "<link\\shref=\"(.*?)\"\\srel=\"stylesheet\"\\stype=\"text/css\">"
dst_list = re.findall(restr, html) # 返回一个列表
# 上面这条语句,会将html里面所有形如str1中的href都返回到列表中# 假如我们是要爬取妹妹图,那么就把当前页面所有的妹妹图的网址都保存到列表了
# 只需要进行如下操作遍历列表就行
for pngurl in dst_list:print(pngurl)
结束语
爬虫会涉及到有关法律问题,这里不作讨论,但是希望大家不要拿来干坏事。概不负责。
爬虫与反爬、反反爬一直都在相互进行着,是相互迭代的过程,爬虫重点在于数据分析而不是代码编写。
本课程涉及的只是非常非常简单的爬虫,还有很多很多爬虫知识需要后续的学习,爬虫涉及的知识太广了,不是一堂课能够讲的清楚的。涵盖网络知识、密码知识、前后端工作方式、编码格式等等。之后应该学校课程有一门叫做《计算机网络技术》,我个人感觉这门课程非常重要,但是其实学校老师讲的可能emmmmmm...
。大家可以课外多花时间学习,不管之后是嵌入式,物联网,互联网,软件开发,网络安全、科学上网等等方向都需要用到计算机网络的知识。
任重而道远,我学这个是凭借着兴趣而学习,所以更多的知识还是得看自己慢慢学。之后我如果有时间,应该会录制两三个爬虫例子。如爬取二次元桌面图片、一键登录校园网、获取天气预报、打造一个翻译官等等。
Python 爬虫入门教程——社团授课型相关推荐
- python爬虫入门教程--优雅的HTTP库requests(二)
requests 实现了 HTTP 协议中绝大部分功能,它提供的功能包括 Keep-Alive.连接池.Cookie持久化.内容自动解压.HTTP代理.SSL认证等很多特性,下面这篇文章主要给大家介绍 ...
- Python爬虫入门教程导航帖
转载:梦想橡皮擦 https://blog.csdn.net/hihell/article/details/86106916 **Python爬虫入门教程导航,目标100篇** 本系列博客争取把爬虫入 ...
- python爬虫入门教程(三):淘女郎爬虫 ( 接口解析 | 图片下载 )
2019/10/28更新 网站已改版,代码已失效(其实早就失效了,但我懒得改...)此博文仅供做思路上的参考 代码使用python2编写,因已失效,就未改写成python3 爬虫入门系列教程: pyt ...
- Python爬虫入门教程:博客园首页推荐博客排行的秘密
1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...
- Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分
1. Python爬虫入门教程 爬取背景 2019年1月10日深夜,打开了百思不得姐APP,想了一下是否可以爬呢?不自觉的安装到了夜神模拟器里面.这个APP还是比较有名和有意思的. 下面是百思不得姐的 ...
- python入门教程百度云-Python爬虫入门教程 百度云盘下载【传智播客】
Python爬虫入门教程 中级共10课 对实现疫情爬虫项目使用到每一个模块逐一讲解, 每个模块都伴随一个案例; 最后水到渠成, 轻松完成疫情爬虫项目.提取码:ea1n 180分钟学会爬虫入门: 1. ...
- python教程是用什么博客写的-Python爬虫入门教程:博客园首页推荐博客排行的秘密...
1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...
- python爬虫入门教程(二):开始一个简单的爬虫
2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...
- Python爬虫入门教程02:小说爬取
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 前文 01.python爬虫入门教程01:豆瓣Top电影爬取 基本开发环境 Python 3 ...
最新文章
- 用计算机采集卡检测压力传感器信号故障,计算机联网检测系统应用研究
- SAP HR模块配置假期日历和缺勤类型
- 哈希函数的原理及应用
- leetcode 112路径总和
- ASP.NET 安全认证(二)——灵活运用deny与allow 及保护.htm等文件
- .net pdf转图片_PDF转图片怎么做?PDF一键转图片!
- TLE5012B磁编码器原理及优点,径向充磁磁铁的安装。AS5047、AS5048、AS5600、TLE5012、MA730
- springboot整合quartz进行数据库存储
- ImagePicker 打开前置摄像头
- 哪个品牌台灯护眼效果好?分享被央视315表扬的护眼灯
- HBase原理–所有Region切分的细节都在这里了
- 微软TTS语音引擎编程入门
- 什么是响应式布局设计?
- 前序遍历、中序遍历、后序遍历层序遍历详解附代码(数据结构C语言)
- C++定义结构体大小根堆的方法
- bitbake-2-poky系统结构
- July, 29(R)
- 理解字节填充和零比特填充
- 怒!移动免费上网卡是骗人的!还是黑我的手机费!
- 初中科学计算机使用,350MS 82MS科学计算器使用方法(初中).doc
热门文章
- 尘埃落定,纪念我的校招(附腾讯,京东,YY,唯品会的面试题+个人前端心得体会)...
- 初识MySQL数据仓库
- 卡尔曼滤波中,噪声非“白”及防止发散的方法
- 【Python】Python系列下载安装教程
- Configuring pre-requisites for the Blockchain Automation Framework
- 在项目管理中如何保持专注,分享一个轻量的时间管理工具【Flow Mac版 - 追踪你在Mac上的时间消耗】
- cmd打开jupyter不自动弹出浏览器的解决方法
- 【tensorflow】简单的Tensorflow手写识别体
- php 将整数改成字符串,php怎么将整型转为字符串
- 福昕阅读器foxit reader Linux版