目录:

一、什么是爬虫?

二、爬虫的基本流程

三、什么是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

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

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

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

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

2.通过Selenium/WebDriver(做自动化测试)来模拟一个浏览器python爬虫从入门到放弃(八)之 Selenium库的使用​www.cnblogs.com

(此网址为selenium.webdriver的使用)

3.Slanshscrapinghub/splash​github.com

(有兴趣可以了解一下)

4.PyV8、Ghost.py

十、怎样保存数据?

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

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

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

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

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

  1. python爬取京东书籍_一个scrapy框架的爬虫(爬取京东图书)

    我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...

  2. python爬虫工资高吗_月薪2万的爬虫工程师,Python需要学到什么程度?

    Python 爬虫学到什么样就可以找工作了? 非计算机专业,正在自学python,很多教程里提到的网站的爬虫都会写了.比如拉勾网,豆瓣,实习僧,京东,淘宝,某妹子图等等--但是因为不是计算机专业的,也 ...

  3. python 快速排序 详解_数据结构与算法:快速排序(原理讲解+python实现)

    快速排序 快速排序是一种基于分治法(Divide and Conquer)的排序算法 它之所以称为快速排序是因为它的平均时间复杂度为O(nlogn),最坏情况下是O(n2) 但是这样的情况不常见 一般 ...

  4. 崔庆才老师爬虫原理讲解笔记

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

  5. Python核心编程朱红庆_朱红庆作品_朱红庆简介_朱红庆作品大全-当当网

    用200多个实训案例和4个综合应用,帮助初中级用户掌握Python使用方法,以便能尽快上手Python核心编程,应对工作上的需求. / 2020-01-01 本书是针对零基础编程学习者的 Python ...

  6. python携程酒店评论_携程酒店评论爬虫心得

    携程酒店评论爬虫心得 发布时间:2018-09-02 15:58, 浏览次数:613 携程酒店评论爬虫心得 这次爬取数据,遇到了不少的困难,也走了很多弯路,特此写下帮助记忆.以下基本是我爬取数据的过程 ...

  7. python爬虫分布式怎么构造_如何构建一个分布式爬虫:实战篇

    本篇文章将是『如何构建一个分布式爬虫』系列文章的最后一篇,拟**从实战角度**来介绍如何构建一个*稳健的分布式微博爬虫*.这里我*没敢谈高效*,抓过微博数据的同学应该都知道微博的反爬虫能力,也知道微博 ...

  8. python爬虫分布式怎么构造_如何构建一个分布式爬虫:基础篇

    继上篇(如何构建一个分布式爬虫:理论篇)我们谈论了Celery的基本知识后,本篇继续讲解如何一步步使用Celery构建分布式爬虫.这次我们抓取的对象定为celery官方文档(Celery - Dist ...

  9. python爬取路况信息_北京市交通管理局实时路况爬虫 | 学步园

    最近无人车项目需要用到交通管理局的实时路况信息,导师要求将实时路况信息爬下来. 我的想法是,因为路况信息是实时更新的,有最新的路况他们会更新,因此需要让程序隔一段时间运行一次,检查这次爬下的内容与上一 ...

最新文章

  1. 若兰-nvjdc 1.3新版本安装及老版本升级教程
  2. Mysql之alter用法汇总
  3. RFC894--以太网上IP数据报的传输标准
  4. 在.net 中依据页的角色验证方式产生相匹配的菜单
  5. stm32f302 can通讯_福特福克斯发动机无法启动,诊断电脑还通讯不了怎么修?
  6. datatable 多字段 排序;
  7. [html] 请说说<script>、<script async>和<script defer>的区别
  8. mysql 创建查询 删除_MYSQL数据库查询删除创建企业基本知识
  9. 五步让你成为专家级程序员
  10. ubuntu matlab_有没有人和我一起整理Python的matlab代替
  11. c语言常考的程序,C语言 一些常考得东西
  12. 又烧一辆!蔚来ES8车库夜里起火 两个半小时才熄灭:现场惨烈
  13. js语法、关键保留字、变量、数据类型
  14. Windows PowerShell和命令行的区别
  15. 自定义表单提交后返回上一页修改
  16. 网管必知:Windows常用网络命令详解
  17. PCB_问题记录_QT(1)引用gdiplus.h、Gdiplus.lib 报错
  18. 卷积神经网络与机器视觉,卷积神经网络图像分类
  19. turtle画分形树
  20. “创业吃过饼,国企养过老,android开发零基础

热门文章

  1. # 160_技巧_Power BI 新函数-计算工作日天数
  2. 微信小程序 WXSS和CSS的区别?什么是WXSS?
  3. 给还没毕业的同学的衷心告诫[转]
  4. 中国定制家具行业发展趋势分析与前景战略研究报告2022-2028年
  5. iOS开发-UI控件:UIImagePickerController 视频录制操作,视频大小,时间长度
  6. FFmpeg进阶:编码YUV视频数据
  7. 7天深度学习-day2-神经网络中的概率
  8. 使用selenium抓取网易云音乐数据
  9. opencv基本操作入门指南 (代码 + 讲解 + 边缘提取示例 + 调取摄像头demo)
  10. 业务流程设计的八大原则