活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰!
一、爬虫的相关概念
1、爬虫可以干什么?
对于个人而言,爬虫可以代替人们自动地在互联网中进行数据信息的采集与整理,批量下载图片、音乐、视频都是小事情,爬虫可以为我们节约更多的时间。
对于爬虫工程师而言,爬虫可以满足公司数据需求,进行数据分析、智能产品练习数据等工作。
2、爬虫是python专有的特长吗?
爬虫不一定要使用python语言,Java、C语言等编程语言也可以进行爬虫操作,只是说使用python语言编写爬虫相对简单,有较多的第三方库支持在爬虫过程中进行调用。
3、爬虫是否合法?
在法律上,爬虫是不被禁止的,也就是说法律是允许爬虫存在的,但是爬虫也具有一定的违法风险,就如同法律允许菜刀的存在,却不允许菜刀的滥用一样。
爬虫分为善意的爬虫:不破坏被爬取网站的资源(正常访问,一般频率不高,不窃取用户的隐私),恶意的爬虫:影响网站的正常运营(抢票,秒杀等疯狂solo网络资源造成网站崩溃等行为)。
所以,我们在爬虫时要注意优化自己的爬虫程序,控制好访问速度等,避免影响到网络的正常运营,同时要注意不可爬取用户隐私、商业机密等敏感数据,避免进橘子。
4、爬虫的矛盾
反爬机制:门户网站可以通过制定相应的策略或者技术手段,防止爬虫程序对网站数据进行爬取。
反反爬机制:爬虫程序可以通过制定相应的策略或者技术手段,破解门户网站终具备的反爬机制,从而获取相关数据。personal tips:不要强行反反爬,因为可能会已经涉及到恶意爬虫。
robots.txt协议:君子协议,规定了网站中那些数据可以被爬取,那些数据不可以被爬取。
5、爬虫的四个步骤:
发送请求——获得数据——解析数据——保存数据
二、爬虫前需要了解的知识
1、HTML和CSS
(1)HTML全称“超文本标记语言”,它没有逻辑结构,采用标记的方式进行网页构建,使用<>将标记括起来。
例:
HTML标签<html> <head> <title>演示页面</title> </head> <body> <p>这是一个简单的页面!</p> <body> <html>
标签名称 说明 <p> 段落标记 <a> 超链接 href 超链接地址 <img> 图片 src 图片存放路径 <span> 行内标签 <li> 列表项 <div> 划分HTML块 <table> 表格标记 <tr> 行标记 <td> 列标记 h1~h6 标题 (2)CSS基础
①层叠样式表
②控制HTML页面的样式和布局
③使用{ }将样式定义括起来
CSS选择器:
元素选择器:元素选择器根据元素名称选择HTML元素
id选择器:使用HTML元素的id属性来选择唯一特定元素
类选择器:选择有特定class属性的HTML元素
HTML就像骨架,CSS就像皮肤
2、URL网址解释
案例网址:https://baike.baidu.com/wapui/subpage/knowledgetopic?id=d49633ff24bfba96d1354ef5
URL是Uriform Resource Locator的简写,统一资源定位符。URL由以下几个部分构成:
(1)协议类型,如:https
(2)主机名称/域名,如:baike.baidu.com
(3)端口号
(4)查找路径,如:knowledgetopic?
(5)查询参数(?后面的所有内容),如:id=d49633ff24bfba96d1354ef5,采用键值对的形式,多个键值对用&符号隔开
(6)锚点,前端用来作面定位。一些后端用来分离项目,也用锚点来做导航。标志符#
3、HTTP与HTTPS
HTTP协议:全称Hyper Text Transfer Protocol(超文本传输协议),是一种接收和发布HTML页面的方法,服务器端口号为:80
HTTPS协议:全称Hyper Text Transfer Protocol over SecureSocket Layer,是HTTP协议的加密版,在HTTP下加入了SSL层,在HTTP的基础上通过身份认证和传输加密阶段保证了传输过程的安全性,服务器端口号为:443
三、爬虫入门知识
1、常见请求方式
http协议规定了浏览器与服务器进行数据交互的过程中必须选择一种交互的方式,http协议定义了八种请求方式,常见有get请求和post请求。
GET请求:一般情况下,只从服务器获取数据,不会对服务器资源产生任何影响的时候使用get请求。
POST请求:向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用post请求,它的请求参数在From Data里面
2、常见请求头
http协议中,向服务器发送一个请求,数据分为三部分:
①数据放在url中
②数据放在body中(post请求)
③数据放在head(请求头)中
常见的请求头参数:
user-agent:浏览器名称
referer:表明这个请求头是从哪个url过来的
cookie:http协议是无状态的,也就是同一个人发了两次请求,服务器没有能力知道这两个请求是否来自同一个人,而带上cookie就识别为登录过的用户或者同一个人请求两次
3、常见请求状态码
200:请求正常,服务器正常的返回数据
301:永久重定向,比如访问http://360buy.com(京东之前的网址)时会重定向到https:www.jd.com/
404:请求的url在服务器上面找不到,即请求的url错误,这个时候应该检查请求的url
418:发送请求遇到服务器端反爬虫,服务器拒绝响应数据
500:服务器内部发生了错误,可能是服务器出现了bug
4、Chrome浏览器分析网站
打开网页——右键——检查
Elements:可以帮助我们分析网页的结构,获取我们想要的数据。
Console:控制台,打印输出网站的一些信息,比如网站的招聘信息
Sources:相当于一个文件夹一样,加载这个网页所需要的所有源文件,除了Elements的源代码以外,还有一些CSS、JS文件等。
Network:查看整个网页发送的所有网络请求。
5、辨析session与cookie
二者都是用于保持HTTP长时间连接状态的技术
session:
①代表服务器与浏览器的一次会话过程
②是一种服务器端的机制,session对象用来存储特定用户会话所需的信息
③由服务器端生成,保存在服务器的内存、缓存、硬盘或者数据库中
cookie:
是由服务器端生成后发送给客户端(通常是浏览器),cookie总是保存在客户端
基本原理:创建cookie—设置存储cookie—发送cookie—读取cookie
6、Ajax请求
(1)Ajax在浏览器和web服务器之间使用异步数据进行传输,可以使网页从服务器请求少量信息,而不是整个网页
(2)Ajax技术独立于浏览器和平台
(3)Ajax一般返回的是json,直接对Ajax地址进行请求就可以返回json数据了
(4)判断是否为Ajax生成的数据:看在滚动网页时是否发生了刷新,如果页面没有刷新说明数据自动生成,就是Ajax渲染到界面上的。
以上便是小y的学习笔记,小y希望和大家共同进步!
欢迎点赞+收藏+关注!