python爬虫系列之 xpath实战:批量下载壁纸

一、前言

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

首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

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

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

  1. 获取网页

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

  2. 提取信息

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

  3. 保存信息

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

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

二、开始写爬虫

我们要爬取的目标网站是:http://www.netbian.com/,这个网站长这样:

picture-1

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

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

对于一个爬虫脚本,我们一般需要考虑以下几点:

  1. 爬什么:我们要从网页上获取的数据是什么
  2. 怎么爬:用什么库?是否需要使用框架?有没有 ajax接口?
  3. 爬取步骤:哪个先爬,哪个后爬

以我们的项目为例:

  1. 爬什么:

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

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

  2. 怎么爬:

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

    解析网页使用 xpath。

  3. 爬取步骤:

    第一步:分析网页,写出图片的 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

这样我们就完成了一个简易版的壁纸爬虫,为什么说是简易版呢,理由如下:

  1. 图片太小了,根本不能用作壁纸(其实是我偷懒了( ̄▽ ̄)"),要获取高清壁纸的话,还需要点击图片进入下一个页面,简单起见我直接爬了首页的缩略图。
  2. 不能自动翻页,运行一次只能下载一页的图片,翻页可以获取网页中下一页的链接,或者寻找网址的变化规律

有兴趣的朋友可以继续完善上面两个问题,可以把问题发在评论区,我会一一查看的。

上一篇:python爬虫系列之 xpath:html解析神器
下一篇:python爬虫系列之 html页面解析:如何写 xpath路径

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容