首先要知道python爬虫是一个程序,这个程序的目的就是为了抓取万维网信息资源,比如你日常使用的谷歌等搜索引擎,搜索结果就全都依赖爬虫来定时获取
了解一个python爬虫离不开了解一下爬虫的基本原理,接下来我们来讲解一下这个原理。
网页请求的过程分为两个环节:
-
Request (请求):每一个展示在用户面前的网页都必须经过这一步,也就是向服务器发送访问请求。
-
Response(响应):服务器在接收到用户的请求后,会验证请求的有效性,然后向用户(客户端)发送响应的内容,客户端接收服务器响应的内容,将内容展示出来,就是我们所熟悉的网页请求,如图 所示。
网页请求的方式也分为两种:
-
GET:最常见的方式,一般用于获取或者查询资源信息,也是大多数网站使用的方式,响应速度快。
-
POST:相比 GET 方式,多了以表单形式上传参数的功能,因此除查询信息外,还可以修改信息。
所以,在写爬虫前要先确定向谁发送请求,用什么方式发送。
爬虫的目标对象也很丰富,不论是文字、图片、视频,任何结构化非结构化的数据爬虫都可以爬取,爬虫经过发展,也衍生出了各种爬虫类型:
通用网络爬虫:爬取对象从一些种子 URL 扩充到整个 Web,搜索引擎干的就是这些事
垂直网络爬虫:针对特定领域主题进行爬取,比如专门爬取小说目录以及章节的垂直爬虫
增量网络爬虫:对已经抓取的网页进行实时更新
深层网络爬虫:爬取一些需要用户提交关键词才能获得的 Web 页面
不想说这些大方向的概念,让我们以一个获取网页内容为例,从爬虫技术本身出发,来说说网页爬虫,步骤如下:
模拟请求网页资源
从HTML提取目标元素
数据持久化
什么是爬虫,这就是爬虫:
“”“让我们根据上面说的步骤来完成一个简单的爬虫程序”“”
import requests
from bs4 import BeautifulSoup
target_url = ‘http://www.baidu.com/s?wd=爬虫’
第一步 发起一个GET请求
res = requests.get(target_url)
第二步 提取HTML并解析想获取的数据 比如获取 title
soup = BeautifulSoup(res.text, “lxml”)
输出 soup.title.text
title = soup.title.text
第三步 持久化 比如保存到本地
with open(‘title.txt’, ‘w’) as fp:
fp.write(title)
加上注释不到20行代码,你就完成了一个爬虫,简单吧