前言
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
通过HTTP库向目标站点发起请求,即发送一个Request
,请求可以包含额外的headers
等信息,然后等待服务器响应。这个请求的过程就像我们打开浏览器,在浏览器地址栏输入网址:www.baidu.com
,然后点击回车。这个过程其实就相当于浏览器作为一个浏览的客户端,向服务器端发送了 一次请求。
如果服务器能正常响应,我们会得到一个Response
,Response
的内容便是所要获取的内容,类型可能有HTML
、Json
字符串,二进制数据(图片,视频等)等类型。这个过程就是服务器接收客户端的请求,进过解析发送给浏览器的网页HTML
文件。
得到的内容可能是HTML
,可以使用正则表达式,网页解析库进行解析。也可能是Json
,可以直接转为Json
对象解析。可能是二进制数据,可以做保存或者进一步处理。这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。
保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件。这就相当于我们在浏览网页时,下载了网页上的图片或者视频。
浏览器发送信息给该网址所在的服务器,这个过程就叫做HTTP Request
。
GET
,POST
两种,另外还有HEAD
、PUT
、DELETE
等。GET 请求的请求参数会显示在URL链接的后面,比如我们打开百度,搜索“图片”,我们会看到请求的URL链接为https://www.baidu.com/s?wd=图片
。而 POST 请求的请求参数会存放在Request
内,并不会出现在 URL 链接的后面,比如我们登录知乎,输入用户名和密码,我们会看到浏览器开发者工具的Network
页,Request
请求有Form Data
的键值对信息,那里就存放了我们的登录信息,有利于保护我们的账户信息安全;(Request Headers)
:请求头包含请求时的头部信息,如User-Agent
(指定浏览器的请求头),Host
,Cookies
等信息;服务器收到浏览器发送的信息后,能够根据浏览器发送信息的内容,做出相应的处理,然后把消息回传给浏览器,这个过程就叫做HTTP Response
。
(Response Headers)
:比如内容类型,内容长度,服务器信息,设置Cookie
等;import requests # 导入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
的过程。
Ajax
加载的Json
格式文本等;演示
import 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('http://www.baidu.com/img/baidu_jgylogo3.gif',headers=headers)
print(resp.content) # 二进制文件使用content
# 保存图片
with open('logo.gif','wb') as f:
f.write(resp.content)
print('Ok')
成功运行就可以看到打印出来的图片的二进制数据,可保存成功后打印的 OK,这个时候我们打开文件夹就可以看到下载下来的图片了。这几行代码就简单的演示了爬虫保存文件的过程。
看到这里,大家是不是已经对爬虫的基本工作原理有了清晰的认识了呢。当然,罗马并不是一天建成的,只要积累了足够多的经验,大家肯定能成为爬虫大神的。