【笔记】2、初学python3网络爬虫——爬虫的基本原理

版权声明:By BenkoZhao https://blog.csdn.net/u011419402/article/details/78148326

python3网络爬虫——爬虫的基本原理

这是我的第二篇python3网络爬虫学习笔记

学习指引:视频教程《python3网络爬虫实战》

为了避免学习后短时间内遗忘,让自己随时可以查阅前方自己学过的知识,特意注册csdn博客,方便自己学习时做笔记,也方便随时回顾。也希望自己的学习过程能给同样初学python爬虫的你带来一点指引!由于自己是新手,只有一点点的python基础,所以笔记中难免会有很多纰漏,还望各路大神多多包涵,多多指教,如有不正确的地方,欢迎指出。

什么是爬虫?

爬虫是请求网站并提取数据的自动化程序。互联网可以类比成一张大网,爬虫是在网上行走的一条虫子,爬到我们想去的地方,获取我们需要的信息。

爬虫一般分为以下四个步骤

1、发起请求(Request)

相当于是python向服务端发送请求,等待服务器的响应。其请求可以包涵额外的headers等信息。

2、获取响应内容(Response)

你发送了请求之后,服务端会给你一个回应,如果是顺利的话,服务端会给你抛回来一堆消息,这些消息就是你要获取的页面内容。

3、解析内容

返回一堆代码,谁都不能一下子看懂对不对?那么我们对获取的内容要进行解析,解析的方法有很多,可以将内容转换成我们方便处理的不同对象,转换后,我们就可以通过这些通俗易懂的对象进行下一步操作了。

4、保存数据

解析完了很多情况下你可能不想马上扔掉,那这个时候就要将数据保存下来,总有再用上的时候。

Request

一般发起请求(Request)时,都会在发送的时候包含一些信息,毕竟你去别人家拿东西的时候,你需要展示身份,表明来意的嘛!那么这个Request中我们会包含哪些信息呢?主要包含四条吧:

1、请求方式

一般是
get
post
(以上是两种主要方式)
head
put
delete
options
等等

2、请求url

相当于是网址

3、请求头

会携带一些头部信息,也相当于你去别人家是,你会告诉对方你是谁(User-Agent),你以一个什么身份来等等信息(Host、Cookies),这样子别人才会让你进门对吧?

4、请求体

请求时额外携带的一些数据,可以理解成你去别人家,你除了告诉别人你的身份和你的目的外,你还要送礼,别人才会给你想要的东西。(如表单提交时的表单数据)

Response

1、响应状态

比如返回代码为200则代表成功、301代表跳转、404代表找不到页面、502代表服务器错误

2、响应头

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

3、响应体

包含了请求资源的内容,如图片、页面等等

对上面的内容测试一下:
这里写图片描述

解析的方式

  1. 直接处理
  2. Json解析
  3. 正则表达式
  4. BeautifulSoup
  5. PyQuery
  6. XPath
  7. 等等

一些问题

为什么抓到的东西跟浏览器看到的不一样?

比如我们抓取微博某一页的内容,我们会发现抓下来的内容非常有限,很多微博的信息都是通过js调用后台接口获取的内容,在html加载完成之后才有。这种情况我们自然抓取不到。不过,这不会影响我们爬虫,有问题找方法,解决JavaScript渲染的问题,有不少方法,我们列举一下:

  1. 分析Ajax请求
  2. Selenium/WebDriver模拟一个浏览器来加载一个网页
  3. Splash
  4. PyV8、Ghost.py
    测试一下第二个方法:
    这里写图片描述
    再输入print(driver.page_source)就可以看到最终页面的代码,这个代码是js渲染完毕后的代码。

怎样保存数据

  1. 文本:纯文本、Json、Xml等
  2. 关系型数据库:MySQL、Oracle、SQL Server等具有结构化表结构形式存储
  3. 非关系型数据库:MongoDB、Redis等Key-Value形式存储
  4. 二进制文件:如图片、视频、音频等等直接保存成特定格式

以上便是我第二课学习到的内容。

之前的学习笔记:

1、初学python3网络爬虫——环境配置
http://blog.csdn.net/u011419402/article/details/78142903

猜你喜欢

转载自blog.csdn.net/u011419402/article/details/78148326