前言
昨天做正则表达式实践时用到了爬虫技术,那只是最浅显的一次运用,让我感到大有可为,也很感兴趣,于是接下来的一段时间打算较为深入的学习下,最起码完成既定目标(成功爬取美女图片、极简壁纸、唯美女生这三个图片网址上的两个或三个)
因为是自学爬虫,虽说有点Python基础,但还是感到一阵心虚(想学好),于是联想自己的学习经历,发现入门课程(但又不局限于入门)如果有位好老师带,那将是非常幸运且幸福的事,之所以这样讲,是之前学习过程中,有几门课程的老师给我留下了非常深的印象,这里罗列下,以表感激之情
课程 | 机构 老师 | 哪里看 |
---|---|---|
HTML+CSS入门 | 渡一教育 袁进 | 腾讯课堂 |
软件工程之美 | 微软 宝玉 | 极客时间 |
计算机网络 | 哈尔滨工业大学 李全龙 | 中国大学MOOC |
Python | 鱼C 小甲鱼 | B站 |
回归正题,基于这样的理念,就花了点功夫找爬虫课程,发现崔庆才(网络上尊称大神)视频课程、博文教程做的很好(Python3爬虫入门到精通课程、静觅),但年代有点久远,就尝试性听了一节47分钟的课,我个人认为真就名副其实,思路还有讲解很合口味,虽说爬虫课程要讲究时效性,但基础知识和流程在这门课上还是可以学习到一些的,最为重要的是,崔庆才大神的博文教程写得非常之详细,且不断更新以及时效性权威性还是很强的,可以跟进学习博文教程
学习记录
爬虫基本原理讲解
什么是爬虫?
请求网站并提取数据的自动化程序
爬虫基本流程
请求和响应
Request与Response
Request
在爬取数据时要模拟浏览器请求,就要创建一个请求,请求分为4部分内容,请求方法、请求网址、请求头、请求体
常见的请求方法有两种:GET和POST
- 在浏览器种直接输入URL并回车,这便发起的是一个GET请求,请求参数会直接包含到URL里
- POST请求大多在表达提交时发起,比如,对于一个登录表单,输入完用户名和密码后,点击 登录 按钮,这便会发起POST请求,其数据通常以表单的形式传输,而不会体现在URL 中
GET和POST请求方法有如下区别
- GET请求中的参数包含在URL里面,数据可以在URL中看到,而POST请求的URL 不会包含这些数据,数据都是以表单形式(请求体)传输
- 一般来说登录时,要提交用户名和密码,其中包含敏感信息,使用GET方式请求的话,密码就会暴露在URL里面,造成密码泄露,所以这里最好以POST方式发送
- 上传文件时,由于文件内容比较大,也会选用POST方式
请求头是请求的重要组成部分,写爬虫时,大部分情况要设定请求头
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等,下面简要说明一些常用的头信息
- Accept:请求报头域,用于指定客户端接受哪些类型的信息
- Accept-Language:指定客户端可接受的语言类型
- Accept-Encoding:指定客户端可接受的内容编码
- Host:用于指定请求资源的主机IP和端口号,其内容位请求URL的原始服务器或网关的位置。从HTTP 1.1版本开始,请求必须包含此内容
- Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做出相应的处理,如做来源统计、防盗链处理等
- User-Agent:UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息,在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能被识别为爬虫
- Content-Type:互联网媒体类型或者MIME类型,在HTTP协议信息头,它用来表示具体请求中的媒体类型信息。在爬虫中,如果要构造POST请求,需要使用正确的Content-Type,并了解各种请求库的各个参数设置时使用哪种Content-Type,不然可能会导致POST提交后无法正常响应
- Cookie:常用复数形式Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据,主要功能是维持当前访问会话
对于POST请求的请求体原来是有表单数据的,但我今天测试百度账号登录并没有发现表单数据
Response
数据解析和数据保存
抓取的数据
解析数据
保存数据
爬取问题
JavaScript渲染问题
抓取到的网页内容和浏览器看到的不一致
使用request模块获取网页内容时,有时会发现获取的网页内容和网页上的不
一样,有些数据并非服务端渲染,而是通过后来加载的数据,某些网站重要
的数据会通过Ajax后期加载,这就分 异步传输和异步加载 两个概念
异步传输模式下,通常在JavaScript种,依次检查JavaScript,就会找到真正的网址
异步加载则是在XHR的选项种获取真实网站地址
爬虫有什么用
- 在网上看到很多美图,比如风景、美食、美女,或者一些资料、文章,想保存到电脑上,一次次右键保存、复制粘贴显然极为费时费力,那就可以利用爬虫将这些图片或资源快速爬取下来
- 平时可能需要到微博、百度、知乎之类的网站,统计一些数据,做产品分析,用户喜好之类分析,就可以用爬虫把这些网站上数据爬取下来,整理成我们想要的数据保存下来,就可以对其进行分析了
- 爬虫非常适合作为入门Python的方向来学习,并且爬虫技术和其他领域(前后端Web开发、数据库、数据分析、人工智能、安全等)几乎都有交集,所以学好爬虫,相当于为其他领域铺好一个台阶
小结
先跟着大神博文学习实践,有具体问题看视频或者搜集资料解决,慢慢来,学习知识要有耐心,不能浮躁