python壁纸数据抓取_python爬虫系列之 xpath实战:批量下载壁纸

一、前言

在开始写爬虫之前,我们先了解一下爬虫

首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

这些还不够,我们还需要知道爬虫爬取数据的基本步骤。

爬虫爬取数据一般分为三个步骤获取网页

巧妇难为无米之炊。我们需要的是数据全在网页里,拿不到网页,代码敲得再好也没用。所以一个爬虫的第一步一定是获取网页。

提取信息

拿到网页之后,我们要做的就是分析网页结构,定位要爬取的信息,然后提取出来

保存信息

获得信息之后,一般需要把信息保存起来以便下次使用

完成上面三步一个简单的爬虫就写好了( ̄▽ ̄)",下面开始写壁纸爬虫

二、开始写爬虫

picture-1

红色方框里的就是我们要爬取的图片。

在动手写代码之前,我们要先理一理思路,这样可以让思路更清晰,写代码时就会更流畅,代码也更简洁。

对于一个爬虫脚本,我们一般需要考虑以下几点:爬什么:我们要从网页上获取的数据是什么

怎么爬:用什么库?是否需要使用框架?有没有 ajax接口?

爬取步骤:哪个先爬,哪个后爬

以我们的项目为例:爬什么:

我们的目标是下载网页中的图片,要下载图片就要先获得图片的地址,而图片的地址就在网页中。

所以我们需要爬取网页中图片的地址。

怎么爬:

图片在几十到几百张之间,下载量不大,不需要使用框架,直接使用 requests库。

解析网页使用 xpath。

爬取步骤:

第一步:分析网页,写出图片的 xpath路径

第二步:用 requests库获取网页

第三步:使用 lxml库解析网页

第四步:通过 xpath获得图片链接

第五步:下载图片

第六步:命名并保存图片

分析完之后,就开始爬取了!

首先第一步,分析网页,在浏览器里打开网页,按下 F12进入开发者模式,选择 Elements选项卡,如图:

picture-2

使用元素选择器:

picture-3

找到标签后,我们就可以写出标签的 xpath路径,这个比较简单,就不详细写了。有疑问的可以评论留言。

图片标签的 xpath路径:

#图片地址

path = '//a[@title]/img/@src'

#为了方便给图片命名 顺便把图片名字也爬下来

name = '//a[@title]/img/@alt'

接下来就是应用我们所学的时候了,话不多说,直接上代码:

#-*- coding: utf-8 -*

import requests

from lxml import etree

#网站地址

url = 'http://www.netbian.com/'

#获取网页

r = requests.get(url)

r.encoding = r.apparent_encoding

#解析网页

dom = etree.HTML(r.text)

#获取图片 img标签

#先获取图片所在的 img标签在分别获取图片链接和名字

img_path = '//a[@title]/img'

imgs = dom.xpath(img_path)

#获取图片的链接和名字 并下载 命名 保存

for img in imgs:

#xpath 的相对路径 “.” 代表上一级标签

#不要忘记 xpath返回的总是列表!

src = img.xpath('./@src')[0]

name = img.xpath('./@alt')[0]

#下载图片

image = requests.get(src)

#命名并保存图片

with open(name+'.jpg', 'wb') as f:

f.write(image.content)

运行结果:

picture-4

这样我们就完成了一个简易版的壁纸爬虫,为什么说是简易版呢,理由如下:图片太小了,根本不能用作壁纸(其实是我偷懒了( ̄▽ ̄)"),要获取高清壁纸的话,还需要点击图片进入下一个页面,简单起见我直接爬了首页的缩略图。

不能自动翻页,运行一次只能下载一页的图片,翻页可以获取网页中下一页的链接,或者寻找网址的变化规律

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值