Python 网络爬虫十万张高清美图实战指南

黑马程序员上海中心

月薪一万只是起点

关注

本篇来自老学员的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,如图:

最后,图片就不奉上啦,做个文明的好学生,哈哈哈~~~~

学姐等你来撩

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181130A18RRN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券