黑马程序员上海中心
月薪一万只是起点
关注
本篇来自老学员的Python爬虫实战分享。
爬虫代码:(可直接划至文章底部查看代码)
https://github.com/zhang3550545/xpath-spider/tree/master/jandan
一
前言
语言代码简短,功能精悍。如之父所言 "人生苦短,我用 Python " 。所以 Python 语言写爬虫具有其他语言比不了的优势。Python 简直为爬虫而生。
在写爬虫程序之前,先说下爬虫程序的步骤,爬虫程序一般分为以下几步:
1. 明确爬虫需求
1.1 需求分析
2. 选择爬虫框架
2.1 框架简介
3. 编写爬虫程序
3.1 抓取网页数据
3.2 清洗网页数据(通过规则获取网页数据)
3.3 保存数据
一
爬虫正文
1. 明确爬虫需求
本文需要爬取的网站是:
需要爬取的内容是:爬取该网站的美女图片。
2. 需求分析
首先我们打开需要爬取的网站,选中一张美女图片,点击鼠标右键,选中检查,查看这张图片在 html 页面的位置。打开浏览器插件(没安装该插件可以通过浏览器应用安装),如下图所示:
通过使用语法进行规则匹配,查找到我们想要的资源图片。同时我们也需要爬取下一页的图片数据,通过 xpath 语法找到下一页的 url ,加载下一页数据。所以我们需要采用递归的方式一页一页的爬取图片数据。
3. 爬虫框架的选择
本文采用版本开发环境,网络请求框架使用:urllib , html 页面解析框架使用:和语法。最后将爬取的数据保存到本地文件。
4. urllib 框架简介
是的一个网络请求框架,是系统的框架,功能比较强大。
urllib 类库包含四个模块:模块,模块,模块,模块。
我们一般常用的是 urllib.request 模块。下面介绍一下 request 模块的常用 api :
urlopen():请求url的方法,参数比较多,如下:
urlopen() 返回的一个上下文的管理对象,对于 http 返回的是一个http.client.HTTPResponse对象。
HTTPResponse对象
详细API可看下面官方文档:
urllib官网文档
https://docs.python.org/3.4/library/urllib.html
HTTPResponse官网文档
https://docs.python.org/3.4/library/http.client.html#http.client.HTTPResponse
5. lxml 简介
lxml类库是一个Html/XML的解析器,主要功能是如何解析和提取HTML/XML数据。
lxml 的安装
pip install lxml
lxml 的 api 介绍
借助模块,来处理 xml 和 html 的数据。如下所示:
文档参考:
lxml 官方文档
http://lxml.de/index.html#documentation
xpath 语法文档
http://www.w3school.com.cn/xpath/xpath_syntax.asp
6. 编写爬虫程序
我们明确需求,选择好框架后,就开始编写爬虫程序了,我们将爬虫程序分为3步,抓取数据,清洗数据,保存数据。
第一步:封装
为了代码能很好的复用,我们把它封装成一个类。定义3个方法,,,, 如下:
第二步:抓取网页数据
通过 urllib.request 模块,请求 url 链接,返回响应的内容。因为我们需要递归解析页面,以及加载图片,所有将请求的方法提取出来,封装成一个方法,具体如下:
第三步: 清洗网页数据
当我们获取网页返回的响应数据,接下来就是使用和规则解析网页的数据。
因为解析的方法都是一致的,只是 rule 的规则不同,返回的数据不同,所以我们将复用解析方法。传入 rule 参数。
第四步: 保存数据
最后获取的数据,是图片的url链接,我们需要将url链接下载对应的图片,并保存到本地。
最后我们调用爬虫程序,然后运行:
运行输出的图片url,如图:
最后,图片就不奉上啦,做个文明的好学生,哈哈哈~~~~
学姐等你来撩
领取专属 10元无门槛券
私享最新 技术干货