- json文件用什么打开(怎么读取json文件)
- 简述springmvc的工作原理(简述springmvc框架执行流程)
- sql优化的方法及思路(sql语句优化5种方式)
- 在python中运算符/与//、%的区别(python中百分号的用法)
- linux find -name 模糊查询文件(linux查找文件命令find模糊查询)
- win10怎么都去不掉开机密码 注册表(win10取消开机密码设置)
- 什么是ftp服务器(简述FTP的工作原理)
- ps描边路径快捷键,ps怎么选区描边快捷键
- linux删除文件夹命令(Linux删除目录下所有文件)
- python使用方法(零基础快速学会简单使用Python)
- ps软件怎么使用(ps新手零基础入门教程)
- css隐藏元素的几种方法(position属性的值及含义)
- 一个c语言程序是由什么组成的(c语言基本语法)
- python语言属于什么语言(python属于什么类型编程语言)
- cookie如何自动获取(怎么获取网页cookie)
- 数据库查询表中所有数据(select查询语句有那些字句)
- ps自动保存的文件在哪个位置(ps文件点了不保存还能恢复吗)
- mysql查询所有的表(sql查询语句大全及实例)
- divmod函数(python中divmod函数是什么意思)
- 什么是私有云计算基础架构的基石(私有云有什么用)
- html是一种什么语言(html是一种编译型的编程语言吗)
- ps分辨率怎么调才清晰(ps最清晰的分辨率是)
- linux关闭防火墙命令(linux防火墙关闭端口命令)
- win10无线网卡检测不到(windows10无线网络图标不见了)
- linux删除用户和用户组(linux强制删除用户命令)
- margin-bottom什么意思( margin属性值 )
- socks是什么意思(Socket作用必知必会)
- win7系统c盘怎么清理(c盘怎么清理到最干净只保留系统)
- 什么是邮件服务器(邮件发送服务器是什么)
- iis工作原理(iis提供的服务有哪些)
- 什么是js(JavaScript),js(JavaScript)的基本特点
- hive和mysql的语法区别(hadoop是做什么的)
- 前端后端分别是什么意思(前端开发工程师是做什么的)
- HTML的正式名称是什么(html是什么的缩写)
- ps怎么用蒙版做遮挡效果快捷键(ps怎么加蒙版遮盖)
- mysql创建数据表的sql语句(mysql建立数据库的步骤)
- linux安装sh文件命令(linux常用基本命令实例)
- linux的特点有哪些(简述linux开发的特点)
- python基础知识点总结(python基础知识思维导图)
- linux怎么修改目录名(linux下mv命令的用法)
- 永久关闭防火墙linux(关闭防火墙代码)
- java面向对象三大特性(如何理解java的面向对象)
- 增删改查sql语句(sql查询语句大全及实例)
- 二维数组初始化行和列哪个可以省(java中二维数组的初始化)
- windows的任务栏可用于做什么(任务栏的基本作用是)
- ps怎么移动图片的某一部分(ps怎么移动图片到另一张图片)
- unicode字符什么意思(显示unicode控制字符是什么意思)
- 电脑开机蓝屏无法进入系统怎么办(电脑出现蓝屏英文要怎么处理)
- range在python中的用法(pycharm中range是什么意思)
- 强制关闭电脑程序的快捷键是什么(强制结束电脑任务按哪些键)
- ps撤销上一步操作的快捷键(photoshop撤销快捷键是什么)
- ps金色cmyk色值是多少(ps暗金色数值是多少)
- vue和react的区别以及优劣势(vue3和react哪个更值得学)
- python生成10个随机数并求和(随机生成10个1到100之间的整数)
- PHP文件是什么(php文件怎么打开)
- redis是什么语言开发的(一文详解Redis)
- web服务器是啥(简述web服务器的工作原理)
- win7防火墙无法更改设置(win7系统防火墙怎么强制关闭)
- d盘格式化了能正常使用吗(格式化d盘和e盘会影响系统吗)
- 比较运算符有哪些(比较运算符的作用是什么)
- win10设置每天自动开关机(win10怎么设置自动开机时间)
- 数据库事务的四大特性以及事务的隔离级别(数据库事务的四大特性及含义)
- windows无法访问共享文件夹(电脑无法访问别人的共享文件)
- 查看linux文件系统类型(简述Linux的文件系统)
- linux查看端口命令(查看端口连接情况的命令)
- Spring 框架是什么(spring框架工作原理)
- 电脑中的mac地址怎么能查到(电脑mac地址哪个是正确的)
- python爱心代码简单(python发射爱心代码)
- 电脑安全模式一直加载怎么办(开机一直显示正在启动windows)
- spyder和pycharm哪个好(spyder使用教程)
- MySQL防止sql注入(有哪些防止sql注入攻击方法)
- pho文件怎么打开(php文件用什么软件打开)
- python输出怎么换行输出(python换行输入代码)
- 在线png转ico工具(png图片怎么转换成ico)
- java标识符有哪些(什么是java中合法的标识符)
- linux查看磁盘空间 命令(linux查看磁盘空间剩余情况)
- photoshop正片叠底怎么用(ps怎么把图层正片叠底)
- windows操作系统是一种什么操作系统(关闭windows10相当于什么)
- ps锐化工具怎么让图更清晰(ps的锐化功能怎么用)
- mysql建表语句主键自增(mysql创建数据表语句大全)
- python字典的基本操作(python字典如何添加元素)
- python中eval用法(python中eval输出什么)
- python打印九九乘法表总结(用python实现打印99乘法表)
- win10隐藏任务栏快捷键(windows桌面底部任务栏隐藏)
- python列表排序方法从大到小(python中对列表进行排序)
- c语言和python先学哪个(C++和Python的区别)
- javascript和java有什么区别(javascript和java哪个好)
- html字体颜色怎么设置(html字体样式代码大全)
- 用python画爱心加名字(python制作超炫流星雨表白)
- ubuntu系统主要干嘛用(ubuntu能做什么)
- linux切换用户命令快捷键(linux怎么切换到root用户)
- fread函数的用法(c语言fread函数的用法)
- win7连接wifi找不到无线网络(电脑怎么找到wifi连接)
- 前端性能优化有哪些方法(前端项目性能优化思路)
- python输入一个整正数n判断是否素数(Python编写一个函数判断素数)
- python爬虫教程(非常详细)(简单python爬虫完整代码)
- mysql密码怎么查看root用户密码(mysql第一次怎么设置密码)
- win10本地组策略编辑器找不到(电脑没有gpedit.msc怎么办)
- 微信小程序是用什么语言开发出来的(如何开发微信小程序)
- 求余运算符%对操作数的要求是什么(c语言中取余数的运算符)
- ps新建背景透明怎么设置(ps怎么把白色背景改为透明)
- ps标尺工具怎么用(ps卡尺的认识与使用)
- ps字体加粗怎么调整(ps里面怎样把字体加粗)
- mysql workbench怎么建立数据库(mysqlworkbench使用教程图解)
- python求和公式怎么编程(python计算1到n的和)
- html背景图片怎么添加css(html背景图片铺满网页)
- align-items属性(align默认属性)
- html图片如何居中 css(html怎么居中显示图片)
- python class用法理解(python调用class)
- win10删除输入法在哪里(删除win10输入法的方法)
- 开源软件是什么意思?闭源呢(开源软件的定义)
- 删除表中的数据的sql命令是什么(删除数据库所有数据的语句)
- java语言是一种什么语言(java通俗说是什么)
- python eval()函数的作用是什么(python中eval函数怎么用)
- java三大体系分别是(java三大主流框架)
- 10个爱心代码编程python(哄女朋友开心的小代码python)
- linux重启命令(linux怎么重新启动)
- linux切换用户命令(linux怎么切换到root用户)
- Win10、Win11 安全中心打开(笔记本windows安全中心怎么打开)
- 什么是网络地址和主机地址(什么是主机地址)
- python中return的用法和搭配(举例说明return语句的用法)
- python阶乘怎么表示(python如何计算阶乘)
- mysql怎么启动命令行(mysql打开是什么样子的)
- python print输出保留两位小数(python基础知识点总结)
- python输出九九乘法表(用python代码实现九九乘法表)
- mysql删除语句delete(mysql语句大全及用法)
- php指的是什么(什么是php)
- 电脑蓝屏无法自动修复怎么办(surface开机蓝屏进不了系统)
- ajax的原理和实现步骤流程(ajax的优缺点及工作原理)
- iframe的用法HTML(iframe框架的基本语法)
- mysql事务的四大特性(mysql的事物的默认隔离级别)
- 硬盘分区教程win10合并(win10硬盘怎么重新分配空间)
- win7笔记本系统摄像头在哪里打开(笔记本win7摄像头怎么打开)
- c语言大小写字母转换编程(c语言中字母大小写转换算法)
- internet提供的最常用便捷的通讯服务是(internet提供的服务包括哪些)
- python中不等于符号怎么写(python中表示不等于的字符)
- 强制删除目录linux命令(linux删除整个目录的命令)
- 阶乘和的python程序代码(Python输入一个数求阶乘)
- Ubuntu是什么系统(ubuntu是什么软件)
- ps设计是干什么的(ps设计是什么专业)
- python2 print用法(python中print的用法例子)
- 以太网无法连接到internet怎么解决(电脑显示无法访问internet)
- java三大特性及其具体含义(Java的三大特点)
- C语言数据结构代码含义(数据结构c语言版怎么学)
- 前端优化性能的方法(前端提高页面性能优化)
- ps蒙版如何使用详细步骤(PS蒙版到底是什么)
- win10开机按f8没反应无法开机(电脑进不去系统按f8也没反应)
- java多态的理解(运行时多态)(java多态的应用场景)
- win7共享文件夹没有权限访问共享文件夹(Win7电脑共享怎么设置)
- 什么是javabean简述其特点(javabean优点有哪些)
- win10怎么设置任务栏透明度(Windows10任务栏透明)
- map在python中是什么意思(python中的map函数的用法)
- 前端三大框架优缺点(前端的三大框架哪个最值得学)
- win10文件夹单独设置密码(如何让文件夹打开时需要密码)
- linux新建一个文件夹命令(linux创建文本文件命令)
- linux文件权限有三种分别是什么(linux查看目录权限命令)
- win10企业版和专业版哪个好(win10正式版和专业版的区别)
- ps修改数字不留痕迹(如何修改图片中的文字)
- vue与nodejs的关系(node.js可以做什么)
- 什么是关系数据库数据操作的基础(关系型数据库是由什么组成的)
- windows和linux的区别及优缺点(linux系统适合日常使用吗)
- linux系统命令cd(linux20个常用命令)
- pycharm中文版界面设置(python设置中文界面两种方法)
- range函数的使用(range在python中什么意思)
- c语言double怎么用(c语言中float的用法举例)
- 什么是ASP.NET(asp是什么意思的缩写)
- win10一直收集错误重启进不去系统(win10系统老是收集错误信息)
- win10启动后黑屏不进入桌面(电脑启动不能进入系统怎么办)
- SQL数据库基本语句(数据库增删改查基本命令)
- 数据库的主要特点(简述数据库的定义与特点)
- javabean的含义(javabean的特点和作用)
- linux查看文件夹大小命令(Linux统计某一类文件的大小)
- len()函数在python中是什么意思(len()函数的功能是什么)
- linux cp命令复制文件到当前目录(linux常用命令复制文件)
- c语言是一种什么语言(c语言是高级语言还是低级语言)
- python定义函数的关键字(定义函数的规则)
- 盒子居中代码html(html网页文字居中代码)
- python函数定义与调用(Python函数的定义及作用详解)
- ps2021怎么加阴影有立体感(ps把平面图做出立体感)
- 随机密码生成python123(python随机生成六位数密码)
- php框架有哪些,php是不是彻底凉了
- ui设计好学吗要学多久(ui设计师需要掌握的技能)
- css选择器有哪几种(css基本选择器有哪些)
- css文本首行缩进2字符怎么设置(html中首行缩进怎么设置)
- 查看进程状态的命令(linux查看指定名称的进程)
- c语言强制类型转换的使用规则(c语言中强制转换语句)
- mysql update语句怎么写(mysql update select用法)
- python中print()的作用是什么(python如何在函数中print)
- 修改表的sql语句命令是(Sql中修改数据表结构语句)
- flag在python中的用法(python flag用法)
- 浏览器javascript怎么开启(如何启用javascript)
- mysql触发器的作用是什么(触发器的类型和作用)
- mysql启动命令windows(cmd中mysql怎么启动并连接)
- ps打字只有一个黑点和横线(ps文字周围有些黑点怎么弄)
- format函数python用法举例(format函数的使用方法)
- ps渲染和不渲染的区别图片对比(渲染图和效果图区别)
- 对于ui设计师的看法(高级ui设计师要具备的能力)
- 汇编语言和c语言哪个难(汇编语言和c语言区别大吗)
- win10系统怎么连接打印机扫描(win10连接打印机找不到设备)
- win10删除本地管理员账户后密码(win10系统如何删除管理员账户)
- ps文字描边快捷键(ps怎么选区描边快捷键)
- c语言程序的三种基本结构是顺序结构(c语言选择结构三种形式)
- ps2019如何调出中心点(ps中心点怎么调出来快捷键)
- 0xc0000225无法进系统win10(电脑出现错误代码0xc0000225)
- html添加图片的代码(html怎么指定图片位置)
- win7无线网络连接不见了怎么办(win7无线网服务怎么开启)
- java跟javascript有什么区别(java 面向对象怎么理解)
- windows audio被停止了怎么办(电脑音频不小心删了怎么恢复)
- c语言程序100例(写代码新手教程)
- mysql删除数据库命令(mysql数据库删除数据语句)
- linux修改文件权限的命令是什么(linux修改用户读写权限命令)
- ps怎么画一条直虚线(photoshop怎么把直线变成虚线)
- 阿里云服务器是干什么用的(自己有一台服务器能干什么)
- windows的桌面是指什么(在windows中桌面是指什么)
- ps文字描边怎么做(ps怎么给图像轮廓描边)
- linux是什么操作系统(linux开发是做什么)
- python内置的集成开发环境(最全的Python IDE 优缺点整理)
- python创建txt文件并写入输出在控制台怎么写(python一段文本写入txt文件)
- linux相对路径怎么写(linux绝对路径和相对路径怎么写)
- python框架有哪些(python开发框架有哪些)
- win10运行速度提高90%怎样提高win10开机速度(win10最强性能优化设置)
- win10网络图标变成了地球没有wifi(网络正常图标显示小地球)
- python中len()的用法(len在python中怎么找长度)
- ftp的功能有哪些(FTP的功能以及使用的协议)
- PS如果做副业难学吗(ps多久可以学会)
- ps从外面拖图片拖不进来win10(图片拖不进ps的解决方法)
- linux进入root权限命令(linux系统怎么进入root模式)
- html文件怎么打开(HTML的意义和作用)
- python中int()的用法(python中输入是int怎么写)
- win10电脑开启摄像头权限在哪里(电脑摄像头设置在哪里)
- php和java区别(java和php的优缺点)
- 什么叫java虚拟机(java虚拟机工作原理)
- .sh文件怎么运行 windows环境(windows执行sh文件命令)
- mysql5.5的安装完怎么打开(MySQL安装教程)
- python列表去重不改变顺序(python列表去重输入一个列表)
- json是什么语言(json对象是什么)
- 笔记本静电积累怎么解决(主机有静电怎么消除)
- 2022年linux查看防火墙状态命令(查看防火墙状态的命令)
- java和javascript有什么区别(JavaScript 与 Java 的关系)
- win10网络连接没有wifi选项(电脑只有以太网不显示WLAN)
- queryselector id用法(querySelector智能提示)
- php连接mysql访问方式(php访问mysql的五个基本步骤)
- linux复制文件夹命令(linux系统复制粘贴命令代码)
- Linux7.9重置root密码(linux系统设置root密码)
- win10win键按了没反应(键盘上的win键没反应怎么办)
- Linux给用户设置密码(Linux创建用户命令)
- mysql事务隔离级别设置(mysql事务隔离级别实现原理)
- 数据库索引的优缺点(数据库索引原理)
- c语言pow函数怎么用(pow在c语言中怎么用)
- python pop函数什么意思(pop语句python)
- win7笔记本摄像头在哪里打开摄像头(win7系统如何开启摄像头权限)
- java连接mysql数据库增删改查(怎么用mysql连接数据库)
- C#是C语言吗(C#是什么)
- py文件怎么打开(py格式用什么打开)
- 一个类只能有一个对象吗(一个类可以实例化多个对象吗)
- javascript和java有什么关系(javascript和java的区别)
- editplus怎么运行html程序(editplus写好了怎么运行)
- c语言大写字母换成小写(c语言大小写字母转换调用函数)
- linux grep命令详解(grep命令的详细使用方法)
- linux退出命令行模式(linux退出编辑模式命令)
- int在python中的用法(int在python中是什么意思)
- void在java中是什么意思(void在java中的用法)
- pythonrange函数的作用(简述range函数的使用规则)
- Linux MySQL数据库备份命令(linux下备份mysql数据库命令)
- 判断是不是闰年的python代码if(用python怎么判断闰年)
- define在c语言中是什么意思(c语言宏定义用法)
- surface平板模式有什么用(surface平板模式好用吗)
- win10怎么用命令提示符修复电脑(win10用命令符修复系统)
- mysql多表查询答案(mysql多表条件查询语句)
- mysql主从复制怎么实现(mysql主从复制读写分离原理)
- JAVA语言特点(java语言的基本特点)
- 关于svchost占用巨大内存的问题(彻底解决win10svchost占用内存过高)
- javabean是框架吗(javabean在系统中的作用)
- 苹果笔记本ps软件怎么用(ps软件使用教程)
- 什么是DNS服务器地址(手机dns怎么设置网速快)
- switch case语句例子(Python语言switch case用法举例)
- 什么叫数据库代码怎么写(谈谈自己对数据库的理解)
- dbf文件可以用word打开吗(dbf格式用什么打开)
- button属性和方法详解(Python中button控件的属性和事件)
- 什么是命令行终端(Linux命令行方式是什么意思)
- ppt怎么做超级链接啊(word里目录和内容怎么做超级链接)
- java在线编程工具(java知识点总结归纳)
- win7如何添加打印机到电脑(win7如何添加共享打印机)
- 电脑不能正常启动windows怎么办(笔记本电脑开机无法进入桌面系统)
- win7如何安装打印机到电脑上(win7电脑怎么安装打印机驱动程序)
- 如何使用photoshop处理图像(photoshop使用方法)
- win10远程桌面无法连接到远程计算机(电脑远程连接不上是什么原因)
- 邮件服务器是什么意思(邮件服务器的概念)
- win7电脑开机蓝屏怎么办(win7开机蓝屏无法进入系统)
- linux设置默认网关命令(linux怎么配置网关)
- 什么是cms系统(cms开发大白话)
- ipv4与ipv6的区别史上最详细(ipv4和ipv6的主要技术区别)
- http的header是什么(header元件作用)
- asp是什么文件的扩展名(asp文件怎么直接从网页打开)
- DNS服务器是什么意思(dns一般设置成什么)
- jpeg和jpeg2000的区别(jpeg和jpg一样吗手机怎么转换)
- xml是什么格式的文件怎么打开(xml文件怎么生成)
- ps反向选区快捷键是什么快捷键(ps图片反选快捷键)
- html文件怎么打开有网页效果(html文件怎么转换成word文档)
- javascript是干什么的(什么是Javascript)
- 在python中运算符/与//、%的区别(python运算符优先级顺序)
- ps背景颜色怎么换快捷键(ps怎么只调背景颜色)
- python是一种什么语言(python和c++学哪个好)
- eclipse中文字体大小设置(eclipse字体大小设置英文版)
- dreamweaver是什么软件类型(dreamweaver网页制作成品软件推荐)
- ps如何换证件照背景颜色(ps换背景教程详细步骤)
- 学linux能干什么工作(linux一般用来做什么)
- 如何做网站网页(怎样做一个网站)
- ip地址怎么判断正确(标准的ip地址格式)
- tup在python中什么意思(pythontuple是什么类型)
- ps怎么换背景颜色不影响到人物(ps更换照片背景颜色)
- javascript和java有什么关系(javascript跟java哪个吃香)
- maven怎么用(Maven的作用)
- ps如何调整照片大小和像素(ps修改图片像素大小)
- 浏览器javascript:void(O)是什么意思(js点击事件onclick用法)
- dom是什么属性(网络dom是什么意思)
- python中+=是什么意思(2**3表示什么python)
- import是什么意思(import在python中的用法)
- windows的任务栏可用于什么程序(在windows中任务栏的作用)
- c语言||和&&什么意思(c语言中&&的优先级)
- unix和linux的区别和联系(linux一般用来做什么)
- ps怎么填充背景色(ps怎么填充画布背景色)
- 色阶的快捷键是什么键(ps常用快捷键)
- ps复制快捷键ctrl加什么(ps新建图层的快捷键是什么)
- wps如何添加脚注(如何修改脚注编号格式)
- 安卓微信黑色模式怎么调(微信显示黑色背景怎么调)
- px是什么单位(px是什么意思)
- pscs6是哪一年的版本(初学者用ps cc还是cs6)
- linux查看系统版本号命令(linux服务器怎么看系统版本)
- voip音量什么意思(什么是voip通话功能)
- php用什么软件来编程(php文件怎么在浏览器运行)
- ps人像精修人脸步骤教程(ps怎么修图基本步骤)
- linux解压zip命令(linux常用打包压缩命令)
- JAVA随机数的方法(java随机数random概率)
- 一个c程序是由什么组成的(c语言的特点)
- ps怎么反选选区(ps反向选择怎么用)
- php自学要学多久(php和python哪个学起来简单一点)
- js语言是什么(js是干什么的)
- eof在c语言中怎么用(eof在c语言中怎么输入)
- c++编译器(目前最流行的编程软件)
- 羽化快捷键ps(ps羽化功能在哪里找)
- win10家庭版安装密钥(重装系统激活windows密钥)
- linux查看进程内存占用命令(linux常用基本命令实例)
- 502badgateway是什么意思?怎么解决(502 bad gateway是什么原因)
- ps背景颜色怎么填充快捷键(照片ps换底色最简单方法)
- php是什么语言(php可以做前端吗)
- mongodb和mysql的区别 性能对比(mongodb mysql性能比较)
- python中def函数的用法(python中def怎么用)
- excel中SQRT是什么意思(sqrt在excel中的作用)
- c语言中的/和%表示什么意思(c语言里的符号大全)
- linux创建目录的命令(linux怎么创建目录和文件)
- CSS3有哪些新特性(列举5个css3新增的属性)
- mysql数据库增删改查基本语句(sql增删改查基本语法)
- 云服务器有什么用(服务器通俗易懂的解释)
- 删除数据库的sql语句(清空当前数据库的命令是什么)
- linux查看端口占用进程(linux常用命令查看端口命令)
- c语言的三种基本数据类型(c语言选择结构三种形式)
- pg数据库是关系型数据库吗(pg数据库基础知识)
- python和c语言的区别大吗(python和c++学哪个好)
- html居中代码怎么写(实现整个html居中最简单方法)
- python中set()函数的用法(python基础知识入门)
- c语言中的/和%表示什么意思(c语言代码大全和详细解释)
- markdown是干嘛用的(markdown格式什么意思)
- python随机生成数字个数(python如何产生一个随机数)
- cpu多线程是什么意思(多线程应用场景例子)
- aspnet是什么语言(asp.net是一种语言吗)
- python主要是做什么的(python有什么用)
- linux修改ip地址的命令(命令修改ip地址)
- linux查看日志的三种命令(linux查看服务器系统日志)
- win10桌面图标间距恢复默认(win10桌面图标间距过大怎么调节)
- python环境变量的配置win10(python环境变量配置教程)
- python用什么编辑器好(python用什么软件编辑)
- Java jsp是什么(jsp的英文全称是什么)
- linux查看端口占用情况(linux如何查看端口是否被占用)
- win10一键锁屏快捷键(电脑如何一键熄灭屏幕快捷键)
- NoSQL数据库具有以下几个特点(nosql数据库的优势和劣势)
- pdf是啥意思(如何转化为pdf格式)
- ps改尺寸大小和像素快捷键(ps把图片修改成指定尺寸)
- html是一种标记语言吗(html底层是什么语言)
- 打印机共享启用网络发现保存不了(更改高级共享设置无法保存修改)
- ps曲线快捷键是什么(ps如何调整颜色曲线快捷键)
- ps一寸照片的尺寸是多少像素(一寸照片尺寸比例怎么调整)
- win10本地安全策略怎么打开(win10安全模式如何修复电脑)
- 删除文件命令Linux(Linux强制删除文件夹命令)
- SQL查询语句大全集锦(sql数据库查询语句例子)
- mysql删除表命令(删除数据库中已经存在的表)
- ajax技术主要功能是什么(javascript是干嘛的)
- linux删除文件夹及其中的所有文件应该使用命令(linux删除当前文件夹命令)
- python是一种什么类型的编程语言(python脚本文件扩展名为)
- 盖印图层和合并图层有什么区别(对盖印图层的描述正确的是)
- JAVA是应用软件吗(java编程是什么)
- win10桌面文件夹路径更改(win10桌面是哪个文件夹)
- mysql常用的索引类型(列举mysql中所有的索引类型)
- mysql修改表中一行数据(MySQL删除表中指定数据)
- 什么是javaweb技术开发(javaweb是什么)
- python的特点有哪些(python语言的5个主要特点)
- mysql和oracle的语法区别有什么(mysql和oracle的sql语句区别)
- 什么是pr剪辑(pr职位是干嘛的)
- 桌面路径改到d盘为什么改不回去了(电脑桌面文件路径怎么改回来)
- ps格式有哪些(详解PS中常见的图片格式)
- ps怎么恢复工具栏初始界面(ps怎么回到初始设置)
- c程序的基本结构单位是(大学c++编程题库及答案)
- sublimetext运行python(sublime配置python环境)
- mysql导致索引失效的情况(数据库索引失效的场景)
- ps反选在哪里(ps里的反向选择快捷键)
- sql优化常用的几种方法(数据库优化方面的经验)
- python生成随机数的模块(python中如何生成随机数)
- html怎么添加图片为背景(html怎么用img添加图片路径)
- python定义变量类型(python如何定义一个变量范围)
- linux查看cpu使用率百分比(linux获取cpu使用率的命令)
- c/s架构和b/s架构的优缺点(c/s架构和b/s架构测试有什么不同)
- linux打开文件夹命令(linux命令查看文件内容)
- 图片格式jpeg和jpg一样吗(jpg格式和jpeg格式是一样的吗)
- 编程难不难学(编程自学能学会吗)
- ps正片叠底怎么使用(ps绘画正片叠底怎么使用)
- python输出语句print格式(pythonprint怎么输出变量)
- filezillaserver使用教程(filezilla远程传输文件)
- 固态硬盘坏了如何修理(固态硬盘损坏会出现什么现象)
- ctrl+d是什么快捷键Excel(做表格按到了ctrl加d怎么办)
- linuxvi编辑器常用命令(linuxvi编辑器命令查找)
- 简述引入css样式表的三种方式(用css和div制作网页的html的代码)
- mac可以开机但进不去系统(苹果电脑开机转圈圈无法启动)
- python多行注释是什么(pythonidea注释多行代码)
- windows10关闭自动更新(笔记本windows自动更新怎么关闭)
- 编程好学吗要学多久(从零开始学编程难吗)
- nodejs一般用来做什么(nodejs的作用是什么)
- linux查看ip命令(Linux查看自己电脑的IP地址)
- def在python中的用法(def在python中的例题)
- python求n的阶乘代码(python中n的阶乘三种方法)
- c语言定义一串数组(c语言数组的定义方法及规则)
- 最小化当前窗口的快捷键是什么(电脑桌面窗口最小化快捷键)
- mysql删除所有数据库(怎样彻底删除数据库SQL)
- h5页面是什么意思(h5页面和网页有什么区别)
- html超链接怎么跳转到指定的页面(html怎么超链接到指定网址)
- c语言字符常量的合法表示(c语言字符串常量定义)
- ps的羽化快捷键在哪里(怎么羽化边缘ps)
- python水仙花数的编程代码(水仙花数python代码条件语句)
- python tkinter布局(tkinter库入门详细教程)
- ps如何反选快捷键(ps反向选区快捷键是什么)
- HTML是指什么(html基本结构框架代码)
- 影楼ps磨皮美白步骤(ps人物磨皮教程步骤)
- 新手学ps2020还是ps2021(初学者ps用什么软件比较好)
- ps局部调亮具体步骤(ps怎么局部提亮和局部变暗)
- react和vue的未来趋势(vue和react的优缺点)
- mpeg4和mp4格式一样吗(mpeg格式怎么转换mp4)
- 清理谷歌浏览器缓存的方法(如何浏览器清理缓存)
- Linux挂载移动硬盘(linux下挂载u盘详解)
- linux创建多个目录的命令(创建文件和目录的命令)
- wifi代理ip怎么设置(苹果手机wifi代理怎么设置)
- python中一个*是什么意思(两个星号是什么意思python)
- linux和unix命令一样吗(linux和unix的关系是什么)
- python判断一个数是否为整数代码(python判断是否为整数)
- pythonif语句格式例子(python条件语句if简单例子)
- pycharm注释的快捷键(python快速注释快捷键)
- python中调用函数的方法(python中怎么调用函数)
- python爬虫可以用来干嘛(python普通人学有什么用)
- ps怎么羽化在哪里(ps羽化的快捷键是什么)
- ps如何填充前景色(如何在ps设置背景色)
- linux查看日志命令(实时查看日志命令)
其实在当今社会,网络上充斥着大量有用的数据,我们只需要耐心的观察,再加上一些技术手段,就可以获取到大量的有价值数据。这里的“技术手段”就是网络爬虫。今天就给大家分享一篇爬虫基础知识和入门教程:
什么是爬虫?
爬虫就是自动获取网页内容的程序,例如搜索引擎,Google,Baidu 等,每天都运行着庞大的爬虫系统,从全世界的网站中爬虫数据,供用户检索时使用。
爬虫流程
其实把网络爬虫抽象开来看,它无外乎包含如下几个步骤
- 模拟请求网页。模拟浏览器,打开目标网站。
- 获取数据。打开网站之后,就可以自动化的获取我们所需要的网站数据。
- 保存数据。拿到数据之后,需要持久化到本地文件或者数据库等存储设备中。
那么我们该如何使用 Python 来编写自己的爬虫程序呢,在这里我要重点介绍一个 Python 库:Requests。
Requests 使用
Requests 库是 Python 中发起 HTTP 请求的库,使用非常方便简单。
模拟发送 HTTP 请求
发送 GET 请求
当我们用浏览器打开豆瓣首页时,其实发送的最原始的请求就是 GET 请求
import requests
res = requests.get('http://www.douban.com')
print(res)
print(type(res))
>>>
<Response [200]>
<class 'requests.models.Response'>
可以看到,我们得到的是一个 Response 对象
如果我们要获取网站返回的数据,可以使用 text 或者 content 属性来获取
text:是以字符串的形式返回数据
content:是以二进制的方式返回数据
print(type(res.text))
print(res.text)
>>>
<class 'str'> <!DOCTYPE HTML>
<html lang="zh-cmn-Hans" class="">
<head>
<meta charset="UTF-8">
<meta name="google-site-verification" content="ok0wCgT20tBBgo9_zat2iAcimtN4Ftf5ccsh092Xeyw" />
<meta name="description" content="提供图书、电影、音乐唱片的推荐、评论和价格比较,以及城市独特的文化生活。">
<meta name="keywords" content="豆瓣,广播,登陆豆瓣">.....
发送 POST 请求
对于 POST 请求,一般就是提交一个表单
r = requests.post('http://www.xxxx.com', data={"key": "value"})
data 当中,就是需要传递的表单信息,是一个字典类型的数据。
header 增强
对于有些网站,会拒绝掉没有携带 header 的请求的,所以需要做一些 header 增强。比如:UA,Cookie,host 等等信息。
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
"Cookie": "your cookie"}
res = requests.get('http://www.xxx.com', headers=header)
解析 HTML
现在我们已经获取到了网页返回的数据,即 HTML 代码,下面就需要解析 HTML,来提取其中有效的信息。
BeautifulSoup
BeautifulSoup 是 Python 的一个库,最主要的功能是从网页解析数据。
from bs4 import BeautifulSoup # 导入 BeautifulSoup 的方法
# 可以传入一段字符串,或者传入一个文件句柄。一般都会先用 requests 库获取网页内容,然后使用 soup 解析。
soup = BeautifulSoup(html_doc,'html.parser') # 这里一定要指定解析器,可以使用默认的 html,也可以使用 lxml。
print(soup.prettify()) # 按照标准的缩进格式输出获取的 soup 内容。
BeautifulSoup 的一些简单用法
print(soup.title) # 获取文档的 title
print(soup.title.name) # 获取 title 的 name 属性
print(soup.title.string) # 获取 title 的内容
print(soup.p) # 获取文档中第一个 p 节点
print(soup.p['class']) # 获取第一个 p 节点的 class 内容
print(soup.find_all('a')) # 获取文档中所有的 a 节点,返回一个 list
print(soup.find_all('span', attrs={'style': "color:#ff0000"})) # 获取文档中所有的 span 且 style 符合规则的节点,返回一个 list
具体的用法和效果,我会在后面的实战中详细说明。
XPath 定位
XPath 是 XML 的路径语言,是通过元素和属性进行导航定位的。几种常用的表达式
表达式含义node选择 node 节点的所有子节点/从根节点选取//选取所有当前节点.当前节点..父节点@属性选取text()当前路径下的文本内容
一些简单的例子
xpath('node') # 选取 node 节点的所有子节点
xpath('/div') # 从根节点上选取 div 元素
xpath('//div') # 选取所有 div 元素
xpath('./div') # 选取当前节点下的 div 元素
xpath('//@id') # 选取所有 id 属性的节点
当然,XPath 非常强大,但是语法也相对复杂,不过我们可以通过 Chrome 的开发者工具来快速定位到元素的 xpath,如下图
得到的 xpath 为
//*[@id="anony-nav"]/div[1]/ul/li[1]/a
在实际的使用过程中,到底使用 BeautifulSoup 还是 XPath,完全取决于个人喜好,哪个用起来更加熟练方便,就使用哪个。
爬虫实战:爬取豆瓣海报
我们可以从豆瓣影人页,进入都影人对应的影人图片页面,比如以刘涛为例子,她的影人图片页面地址为
https://movie.douban.com/celebrity/1011562/photos/
下面我们就来分析下这个网页
目标网站页面分析
注意:网络上的网站页面构成总是会变化的,所以这里你需要学会分析的方法,以此类推到其他网站。正所谓授人以鱼不如授人以渔,就是这个原因。
Chrome 开发者工具
Chrome 开发者工具(按 F12 打开),是分析网页的绝佳利器,一定要好好使用。
我们在任意一张图片上右击鼠标,选择“检查”,可以看到同样打开了“开发者工具”,而且自动定位到了该图片所在的位置
可以清晰的看到,每张图片都是保存在 li 标签中的,图片的地址保存在 li 标签中的 img 中。
知道了这些规律后,我们就可以通过 BeautifulSoup 或者 XPath 来解析 HTML 页面,从而获取其中的图片地址。
代码编写
我们只需要短短的几行代码,就能完成图片 url 的提取
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/celebrity/1011562/photos/'
res = requests.get(url).text
content = BeautifulSoup(res, "html.parser")
data = content.find_all('div', attrs={'class': 'cover'})
picture_list = []
for d in data:
plist = d.find('img')['src']
picture_list.append(plist)
print(picture_list)
>>>
['https://img1.doubanio.com/view/photo/m/public/p2564834267.jpg', 'https://img1.doubanio.com/view/photo/m/public/p860687617.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2174001857.jpg', 'https://img1.doubanio.com/view/photo/m/public/p1563789129.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2363429946.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2382591759.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2363269182.jpg', 'https://img1.doubanio.com/view/photo/m/public/p1959495269.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2356638830.jpg', 'https://img3.doubanio.com/view/photo/m/public/p1959495471.jpg', 'https://img3.doubanio.com/view/photo/m/public/p1834379290.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2325385303.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2361707270.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2325385321.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2196488184.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2186019528.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2363270277.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2325240501.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2258657168.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2319710627.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2319710591.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2311434791.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2363270708.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2258657185.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2166193915.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2363265595.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2312085755.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2311434790.jpg', 'https://img3.doubanio.com/view/photo/m/public/p2276569205.jpg', 'https://img1.doubanio.com/view/photo/m/public/p2165332728.jpg']
可以看到,是非常干净的列表,里面存储了海报地址。
但是这里也只是一页海报的数据,我们观察页面发现它有好多分页,如何处理分页呢。
分页处理
我们点击第二页,看看浏览器 url 的变化
https://movie.douban.com/celebrity/1011562/photos/?type=C&start=30&sortby=like&size=a&subtype=a
发现浏览器 url 增加了几个参数
再点击第三页,继续观察 url
https://movie.douban.com/celebrity/1011562/photos/?type=C&start=60&sortby=like&size=a&subtype=a
通过观察可知,这里的参数,只有 start 是变化的,即为变量,其余参数都可以按照常理来处理
同时还可以知道,这个 start 参数应该是起到了类似于 page 的作用,start = 30 是第二页,start = 60 是第三页,依次类推,最后一页是 start = 420。
于是我们处理分页的代码也呼之欲出了
首先将上面处理 HTML 页面的代码封装成函数
def get_poster_url(res):
content = BeautifulSoup(res, "html.parser")
data = content.find_all('div', attrs={'class': 'cover'})
picture_list = []
for d in data:
plist = d.find('img')['src']
picture_list.append(plist)
return picture_list
然后我们在另一个函数中处理分页和调用上面的函数
def fire():
page = 0
for i in range(0, 450, 30):
print("开始爬取第 %s 页" % page)
url = 'https://movie.douban.com/celebrity/1011562/photos/?type=C&start={}&sortby=like&size=a&subtype=a'.format(i)
res = requests.get(url).text
data = get_poster_url(res)
page += 1
此时,我们所有的海报数据都保存在了 data 变量中,现在就需要一个下载器来保存海报了
def download_picture(pic_l):
if not os.path.exists(r'picture'):
os.mkdir(r'picture')
for i in pic_l:
pic = requests.get(i)
p_name = i.split('/')[7]
with open('picture\\' + p_name, 'wb') as f:
f.write(pic.content)
再增加下载器到 fire 函数,此时为了不是请求过于频繁而影响豆瓣网的正常访问,设置 sleep time 为1秒
def fire():
page = 0
for i in range(0, 450, 30):
print("开始爬取第 %s 页" % page)
url = 'https://movie.douban.com/celebrity/1011562/photos/?type=C&start={}&sortby=like&size=a&subtype=a'.format(i)
res = requests.get(url).text
data = get_poster_url(res)
download_picture(data)
page += 1
time.sleep(1)
下面就执行 fire 函数,等待程序运行完成后,当前目录下会生成一个 picture 的文件夹,里面保存了我们下载的所有海报
核心代码讲解
下面再来看下完整的代码
import requests
from bs4 import BeautifulSoup
import time
import osdef fire():
page = 0
for i in range(0, 450, 30):
print("开始爬取第 %s 页" % page)
url = 'https://movie.douban.com/celebrity/1011562/photos/?type=C&start={}&sortby=like&size=a&subtype=a'.format(i)
res = requests.get(url).text
data = get_poster_url(res)
download_picture(data)
page += 1
time.sleep(1)def get_poster_url(res):
content = BeautifulSoup(res, "html.parser")
data = content.find_all('div', attrs={'class': 'cover'})
picture_list = []
for d in data:
plist = d.find('img')['src']
picture_list.append(plist)
return picture_listdef download_picture(pic_l):
if not os.path.exists(r'picture'):
os.mkdir(r'picture')
for i in pic_l:
pic = requests.get(i)
p_name = i.split('/')[7]
with open('picture\\' + p_name, 'wb') as f:
f.write(pic.content)if __name__ == '__main__':
fire()
fire 函数
这是一个主执行函数,使用 range 函数来处理分页。
- range 函数可以快速的创建整数列表,在 for 循环时及其好用。函数中的0代表从0开始计数,450代表一直迭代到450,不包含450,30代表步长,即每次递增的数字间隔。range(0, 450, 30),依次会输出:0,30,60,90 …
- format 函数,是一种字符串格式化方式
- time.sleep(1) 即为暂停1秒钟
get_poster_url 函数
这个就是解析 HTML 的函数,使用的是 BeautifulSoup
- 通过 find_all 方法查找所有 class 为 “cover” 的 div 元素,返回的是一个列表
- 使用 for 循环,循环上一步拿到的列表,取出 src 的内容,append 到列表中
- append 是列表的一个方法,可以在列表后面追加元素
download_picture 函数
简易图片下载器
- 首先判断当前目录下是否存在 picture 文件夹,os.path.exists
- os 库是非常常用用来操作系统相关的命令库,os.mkdir 就是创建文件夹
- split 用于切割字符串,取出角标为7的元素,作为存储图片的名称
- with 方法用来快速打开文件,打开的进程可以自行关闭文件句柄,而不再需要手动执行 f.close() 关闭文件
总结
本节讲解了爬虫的基本流程以及需要用到的 Python 库和方法,并通过一个实际的例子完成了从分析网页,到数据存储的全过程。其实爬虫,无外乎模拟请求,解析数据,保存数据。
当然有的时候,网站还会设置各种反爬机制,比如 cookie 校验,请求频度检查,非浏览器访问限制,JS 混淆等等,这个时候就需要用到反反爬技术了,比如抓取 cookie 放到 headers 中,使用代理 IP 访问,使用 Selenium 模拟浏览器等待方式。
由于本课程不是专门的爬虫课,这些技能就留待你自己去探索挖掘啦。