python爬虫基本原理_Python 爬虫 (1): 基本原理

本文介绍了Python爬虫的基本原理,包括发起请求、获取响应内容、解析内容和保存数据四个步骤。通过实例展示了如何使用requests库发送GET请求并获取HTML内容,以及如何保存图片文件。此外,还提及了爬虫可以抓取的数据类型,如HTML、Json、图片等,并提到了解析内容的不同方式。文章适合初学者理解爬虫工作流程。
摘要由CSDN通过智能技术生成

Python 爬虫 (1): 基本原理

大家好, 今天周末, 希望大家周末愉快

这篇文章我来梳理一下爬虫的基本原理用过 Python 的伙伴都知道 Python 用来写爬虫是件很简单很爽的事情但是有些伙伴不了解爬虫到底是什么, 会纳闷为什么爬虫要设置什么请求头请求体啊, 到底要怎么样去发送这个请求啊当然有的伙伴使用过很多爬虫的请求库, 解析库, 写过很多爬虫, 但是可能他们的思路脉络也不是太清晰那么, 这篇文章就来帮大家理清爬虫原理的脉络

什么是爬虫?

ab7653affab982b574eb7acc55df2e04.gif

爬虫即网络爬虫, 英文是 web Spider 翻译过来就是网络上爬行的蜘蛛, 如果把互联网看作一张大网, 那么爬虫就是在大网上爬来爬去的蜘蛛, 碰到想要的食物, 就把他抓取出来

我们在浏览器中输入一个网址, 敲击回车, 看到网站的页面信息这就是浏览器请求了网站的服务器, 获取到网络资源那么, 爬虫也相当于模拟浏览器发送请求, 获得到 html 代码 HTML 代码里通常包含了标签和文字信息, 我们就从中提取到我们想要的信息

通常爬虫是从某个网站的某个页面开始, 爬取这个页面的内容, 找到网页中的其他链接地址, 然后从这个地址爬到下一个页面, 这样一直不停的爬下去, 进去批量的抓取信息那么, 我们可以看出网络爬虫就是一个不停爬取网页抓取信息的程序

爬虫的基本流程

1. 发起请求:

通过 HTTP 库向目标站点发起请求, 即发送一个 Request, 请求可以包含额外的 headers 等信息, 然后等待服务器响应这个请求的过程就像我们打开浏览器, 在浏览器地址栏输入网址: www.baidu.com, 然后点击回车这个过程其实就相当于浏览器作为一个浏览的客户端, 向服务器端发送了 一次请求

2. 获取响应内容:

如果服务器能正常响应, 我们会得到一个 Response,Response 的内容便是所要获取的内容, 类型可能有 HTMLJson 字符串, 二进制数据 (图片, 视频等) 等类型这个过程就是服务器接收客户端的请求, 进过解析发送给浏览器的网页 HTML 文件

3. 解析内容:

得到的内容可能是 HTML, 可以使用正则表达式, 网页解析库进行解析也可能是 Json, 可以直接转为 Json 对象解析可能是二进制数据, 可以做保存或者进一步处理这一步相当于浏览器把服务器端的文件获取到本地, 再进行解释并且展现出来

4. 保存数据:

保存的方式可以是把数据存为文本, 也可以把数据保存到数据库, 或者保存为特定的 jpg,mp4 等格式的文件这就相当于我们在浏览网页时, 下载了网页上的图片或者视频

Request

1. 什么是 Request?

浏览器发送信息给该网址所在的服务器, 这个过程就叫做 HTTP Request

2.Request 中包含什么?

请求方式: 请求方式的主要类型是 GET,OST 两种, 另外还有 HEADPUTDELETE 等 GET 请求的请求参数会显示在 URL 链接的后面, 比如我们打开百度, 搜索图片, 我们会看到请求的 URL 链接为

https://www.baidu.com/s?wd = 图片

而 POST 请求的请求参数会存放在 Request 内, 并不会出现在 URL 链接的后面, 比如我们登录知乎, 输入用户名和密码, 我们会看到浏览器开发者工具的 Network 页, Request 请求有 Form Data 的键值对信息, 那里就存放了我们的登录信息, 有利于保护我们的账户信息安全;

请求 URL:URL 全称是统一资源定位符, 也就是我们说的网址比如一张图片, 一个音乐文件, 一个网页文档等都可以用唯一 URL 来确定, 它包含的信息指出文件的位置以及浏览器应该怎么去处理它;

请求头(Request Headers): 请求头包含请求时的头部信息, 如 User-Agent(指定浏览器的请求头),Host,Cookies 等信息;

请求体: 请求体是请求是额外携带的数据, 比如登录表单提交的登录信息数据

Response

1. 什么是 Response?

服务器收到浏览器发送的信息后, 能够根据浏览器发送信息的内容, 做出相应的处理, 然后把消息回传给浏览器, 这个过程就叫做 HTTP Response

2.Response 中包含什么?

响应状态: 有多种响应状态, 比如 200 代表成功, 301 跳转页面, 404 表示找不到页面, 502 表示服务器错误;

响应头(Response Headers): 比如内容类型, 内容长度, 服务器信息, 设置 Cookie 等;

响应体: 响应体最主要的部分, 包含了请求资源的内容, 比如网页 HTML 代码, 图片二进制数据等

简单演示importrequests# 导入 requests 库, 需要安装

# 模拟成浏览器访问的头

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

resp=requests.get('https://www.baidu.com',headers=headers)

print(resp.text)# 打印出网页源代码

print(resp.status_code)# 打印出状态码

运行成功后可以看到打印出来的 html 源代码和 200 状态码了这就基本上实现了爬虫的 Request 和 Response 的过程

能抓到什么样的数据?

网页文本: 如 HTML 文档, Ajax 加载的 Json 格式文本等;

图片, 视频等: 获取到的是二进制文件, 保存为图片或视频格式;

其他只要能请求到的, 都能获取

演示importrequests

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

resp=requests.get('http://www.baidu.com/img/baidu_jgylogo3.gif',headers=headers)

print(resp.content)# 二进制文件使用 content

# 保存图片

withopen('logo.gif','wb')asf:

f.write(resp.content)

print('Ok')

成功运行就可以看到打印出来的图片的二进制数据, 可保存成功后打印的 OK, 这个时候我们打开文件夹就可以看到下载下来的图片了这几行代码就简单的演示了爬虫保存文件的过程

解析方式有哪些?

直接处理, 比如简单的页面文档, 只要去除一些空格的数据;

Json 解析, 处理 Ajax 加载的页面;

正则表达式;

BeautifulSoup 库;

PyQuery;

XPath

看到这里, 大家是不是已经对爬虫的基本工作原理有了清晰的认识了呢当然, 罗马并不是一天建成的, 只要积累了足够多的经验, 大家肯定能成为爬虫大神的

接下来, 我会给大家继续分享一些我在学习爬虫时的经验总结

来源: http://www.jqhtml.com/13259.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值