python爬虫原理与简单爬虫 夜车星繁的博客
如果把互联网看作一张大网,那么爬虫就是在大网上爬来爬去的蜘蛛,碰到想要的食物,就把他抓取出来。
真是难以置信python的学习居然开始缓缓地步入了所谓的后期我这个渣渣不得不接受这样的前所未有的学习一门语言闪电战一般的记忆偶尔空白;人的思想会随着每天的日落而改变,我也正雕刻这块与生俱来的石。
我们在浏览器中输入一个网址,敲击回车,看到网站的页面信息。这就是浏览器请求了网站的服务器,获取到网络资源。那么,爬虫也相当于模拟浏览器发送请求,获得到HTML
代码。HTML
代码里通常包含了标签和文字信息,我们就从中提取到我们想要的信息。
通常爬虫是从某个网站的某个页面开始,爬取这个页面的内容,找到网页中的其他链接地址,然后从这个地址爬到下一个页面,这样一直不停的爬下去,进去批量的抓取信息。那么,我们可以看出网络爬虫就是一个不停爬取网页抓取信息的程序。
爬虫的基本步骤:
1.发起请求:
通过HTTP库向目标站点发起请求,即发送一个Request
,请求可以包含额外的headers
等信息,然后等待服务器响应。这个请求的过程就像我们打开浏览器,在浏览器地址栏输入网址:www.baidu.com
,然后点击回车。这个过程其实就相当于浏览器作为一个浏览的客户端,向服务器端发送了 一次请求。
2.获取响应内容:
如果服务器能正常响应,我们会得到一个Response
,Response
的内容便是所要获取的内容,类型可能有HTML
、Json
字符串,二进制数据(图片,视频等)等类型。这个过程就是服务器接收客户端的请求,进过解析发送给浏览器的网页HTML
文件。
3.解析内容:
得到的内容可能是HTML
,可以使用正则表达式,网页解析库进行解析。也可能是Json
,可以直接转为Json
对象解析。可能是二进制数据,可以做保存或者进一步处理。这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。
4.保存数据:
保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件。这就相当于我们在浏览网页时,下载了网页上的图片或者视频。
Request
1.什么是Request?
浏览器发送信息给该网址所在的服务器,这个过程就叫做HTTP Request
。
2.Request中包含什么?
- 请求方式:请求方式的主要类型是
GET
,OST
两种,另外还有HEAD
、PUT
、DELETE
等。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 代码,图片二进制数据等。
一个简单爬虫的例子:
我们随便打开一个网页:以用firefox浏览器打开必应网页为例
右键审查元素:
右边下滑打开原始头查看浏览器请求头:
在pycharm上实现:
抓到其HTML源码。。。。
这个代码不懂的地方死记硬背就行了.....