目录:

一、什么是爬虫?
二、爬虫的基本流程
三、什么是Request和Response?
四、Request中包含什么?
五、Response中包含什么?
六、能抓怎样的数据
七、解析方式
八、为啥我抓到的和浏览器看到的不一样?
九、怎么解决JavaScript渲染的问题?
十、怎样保存数据?

一、什么是爬虫?

简单来说就是:请求网站并提取数据的自动化程序。(个人理解就是我们点击网页浏览的过程)

操作:右键--->审查元素(如若想提取链接信息的话,就要从这些htm代码提取文字和链接信息,用解析库解析以上的信息,存成结构化的数据)

二、爬虫的基本流程

1.robots.txt
通过在所要爬取的母网站(如http://www.weibo.com/)后面增加robots.txt,即可查出所有不可爬取的网站
2.发起请求
通过HTTP库向目标站点发起请求,即发送一个request,请求可以包含额外的headers等信息,等待服务器响应
3.获取响应内容;
如果服务器能正常响应所要获取的页面内容,会得到一个Response,Response的内容便是,类型可能是HTML,JSON字符串,二进制数据等类型;
4.解析内容
得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析;可能是JSON,可以直接转为JSON对象解析,可能是二进制数据,可以做保存或者进一步处理;
5.保存数据
保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式文件

三、什么是Request和Response?

四、Request中包含什么?

1.请求方式:

主要有GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等。

2.请求URL

URL全程统一资源定位符,如一个网页文档、一张图片、一个视频都可以用URL唯一来确定

3.请求头

包含请求时的头部信息,如User-Agent、Host、Cookies等信息。

4.请求体

请求时额外携带的数据,如表单提交时的表单数据(Eg:fromdata)

五、Response中包含什么?

1.响应状态

有多重响应状态,如200代表成功、301是跳转、404为找不到网页、502服务器错误

2.响应头

如内容类型、内容长度、服务器信息、设置Cookie等等;

3.响应体

最主要的部分,包含了请求资源的内容,如网页HTML、图片二进制数据等;

#结果没有打印出来,大家可以自行尝试
import requests
response = requests.get('http://www.baidu.com')
print(response.text)#响应体
print(response.headers)#响应头
print(response.status_code)#响应状态码
headers = {}#定义一个头部信息
headers = {Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36}#次头部信息为电脑自身信息
response1 = requests.get('http://www.baidu.com',headers = headers)#用新的headers请求百度
print(response1.status_code)#使用响应状态码进行检验

六、能抓怎样的数据

1.网页文本(如HTML文档,JSON格式文本等)

2.图片(获取二进制文本文件,保存为图片格式)

response2 = requests.get('https://www.baidu.com/img/bd_logo1.png')#抓取图片
print(response2.content)#打印出来为二进制格式
with open('F:/dd.png','wb')as f:#创建一个文件,格式为图片格式f.write(response2.content)f.close#会出现705或是7787或是其他数字,检查所在目录下是否有dd.png这个文件就可以

3.视频(同样为二进制文件,保存为音频格式即可,抓取方法如图片抓取方法)

4.其他(只要是能请求到的,都能获取)

七、解析方式

1.直接处理(前提:网页构造简单)

2.Json解析

3.正则表达式

4.BeautifulSoup

5.PyQuery

6.XPath

八、为啥我抓到的和浏览器看到的不一样?

Eg:http://m.weibo.com(可以使用第五中的代码演示)

由于JavaScript渲染的问题,在network看到的代码(我们通过Python)与element中看到(JavaScript渲染的)不一样

九、怎么解决JavaScript渲染的问题?

1.分析Ajax请求(返回Json格式数据)

2.通过Selenium/WebDriver(做自动化测试)来模拟一个浏览器

https://www.cnblogs.com/zhaof/p/6953241.html(此网址为selenium.webdriver的使用)

3.Slansh

https://github.com/scrapinghub/splash(有兴趣可以了解一下)

4.PyV8、Ghost.py

十、怎样保存数据?

1.文本:纯文本、Json、Xml等

2.关系型数据库:如MySQL、Oracle、SQL Server等具有结构化表结构形式存储

3.非关系型数据库:MongoDB、Redis等Key-Value形式存储

4.二进制文件:如图片、视频、音频等等直接保存成特定格式即可

崔庆才老师爬虫原理讲解笔记相关推荐

  1. python爬虫崔庆才_崔庆才老师爬虫原理讲解笔记

    目录: 一.什么是爬虫? 二.爬虫的基本流程 三.什么是Request和Response? 四.Request中包含什么? 五.Response中包含什么? 六.能抓怎样的数据 七.解析方式 八.为啥 ...

  2. 双十二爬虫顶流崔庆才老师来图灵直播啦!快来围观啊!!!

    <Python 3网络爬虫开发实战(第2版)>上市一周便登上了京东新书销量榜第一位,延续第一版的好内容.好口碑,成为近期火爆技术圈的新书.12.12 晚 20:00 我们邀请崔庆才老师来图 ...

  3. 利用Ajax爬取今日头条头像,街拍图片。关于崔庆才python爬虫爬取今日头条街拍内容遇到的问题的解决办法。

    我也是初学爬虫,在看到崔庆才大佬的爬虫实战:爬取今日头条街拍美图时,发现有些内容过于陈旧运行程序时已经报错,网页的源代码早已不一样了.以下是我遇到的一些问题. 1.用开发者选项筛选Ajax文件时预览看 ...

  4. pythonscrapy爬虫 崔庆才_Scrapy爬虫(一):专题概要

    Scrapy爬虫(一):专题概要 准备工作 在最近做的智能项目中,我们在获取到用户需求的文本后,需要对用户的行为意图进行分析,然后做出响应,比如语义解析.内容推荐.数据整合等.和windows小娜一样 ...

  5. 最新崔庆才Python3爬虫入门到精通课程视频 附软件+源码+资料

    课程目录: 第一阶段: 环境配置 第1课:Python3+Pip环境配置 第2课:MongoDB环境配置 第3课:Redis环境配置 第4课:MySQL的安装 第5课:Python多版本共存配置 第6 ...

  6. 《Python 3网络爬虫开发实战 》崔庆才著 第三章笔记

    使用urllib 它是 Python内置的HTTP请求库,也就是说不需要额外安装即可使用. 包含以下4个模块: 名字 说明 request 它是最基本的 HTTP请求模块,可以用来模拟发送请求.就像在 ...

  7. pythonscrapy爬虫 崔庆才_Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  8. python mysql教程视频_第四课:MySQL环境安装-(崔庆才_Python3爬虫入门到精通课程视频 34课)总结...

    输入localhost密码123456 Linux下安装mysql 命令输入Sudo su接着sudo apt-get install mysql-server mysql-client 安装设置密码 ...

  9. 崔庆才_Python3爬虫入门到精通课程视频附软件与资料视频分享——基础篇

    学习视频地址: https://www.xiaocifang.com/i/IO77600e00ux6.html 视频截图: 转载于:https://www.cnblogs.com/yxxblog/p/ ...

最新文章

  1. Linux C++与Python混合编程(g++生成链接库与python调用)
  2. numpy生成随机数
  3. 【RecyclerView】 十五、使用 ItemTouchHelper 实现 RecyclerView 拖动排序 ( ItemTouchHelper 简介 )
  4. Python3.5 报错:NameError: name 'reload' is not defined
  5. 虚拟机上安装完成redhat后无法上网和Xshell无法连接虚拟机的问题
  6. hexo-Fluid主题使用手册
  7. (转)nmake学习笔记
  8. 机器学习 结构化数据_聊天机器人:根据结构化数据创建自然语言
  9. 一文学会最常见的10种NLP处理技术(附资源代码)
  10. Java中判断String不为空的问题性能比较
  11. Exchange的邮箱创建与使用
  12. 应知应会的Word图片技巧(转)
  13. 2021-2027全球与中国双断面隔离器市场现状及未来发展趋势
  14. 最新 | Windows和信创终端都能顺滑使用宁盾802.1X账密认证了
  15. Python + PIL 处理支付宝AR红包
  16. 交接读代码得过程和整理文档
  17. 凹凸手游服务器维护中是什么意思,凹凸世界手游测试炸服补偿公告介绍 开服进不去有什么补偿[多图]...
  18. 坛经与禅宗的智慧-王德峰
  19. 实验吧CTF练习题---安全杂项---异性相吸解析
  20. java病人健康档案管理电子病历系统ssm

热门文章

  1. 云端智创 | 基于视频AI原理的音视频智能处理技术
  2. 【环境配置】Ubuntu20.04安装ffmpeg
  3. Python学习--多态
  4. nginx安装配置并nginx添加至systemctl
  5. c语言做飞翔的小鸟简笔画图片大全,各种飞翔的小鸟简笔画图片
  6. mac版小米手机助手_手机版B站下载助手 v1.0.3 从此告别打开电脑下载
  7. Ant Design For Vue 分页
  8. 火狐导出书签_如何导出/备份Firefox书签?
  9. 存储单位的位(bit)、字节(Byte)、MB(兆位)之间的换算关系
  10. js逆向-金沙赌场参数k值