Python爬虫之一个海贼迷的呐喊

<10>

海贼王已经10年了,一路陪伴了我们的点点滴滴。它热血,激情,感人,欢乐,吸引了无数男女老少的紧紧跟随。

说起来还真有点小心酸,原谅博主也是个海贼迷,心中怀揣着很大的梦想,誓死也要成为海贼王的男人。

但如今梦想已经破灭了,因为博主有了女朋友...

什么?说我是假粉丝,我上去就给你一巴掌!点击返回看看本篇的封面!!

没错,别怀疑,那是博主画的。

博主库爱画画,素描,水彩,国画都学过点,当然这个是在wacom绘画板上,利用corel painter + photoshop完成的(题外话)。

最后的最后,博主会放几张之前画的作品,献丑了。

好了,收!

说说我们的正题,前面两篇爬虫学习介绍了正则和BeautifulSoup的内容,这里其实是想借着这个机会给大家分享一下正则和BeautifulSoup解析的实战例子。

目标实现比较简单,就是下载xxx网站上海贼王动漫的套图。爬取效果如下:

(截取了部分下载过程)

(部分下载图片)

采取了多线程爬取,总共一千多张,都存在本地了。

功能分析

本篇目的是使用正则+BeautifulSoup,因此后面不更多赘述了。

提取系列链接

通过开发者工具看到,所有的系列都是同一级别的节点,那么我们首先应该做的是遍历所有页码,然后提取每页各个系列的链接。

接下来看看链接在哪。

小提示:红框内第一个是鼠标自动跟随,第二个是手机/PC切换,使用起来非常方便。

具体点开其中一个系列标签一看,我们要的链接正是<a>标签下的href属性,但是你会发现有两个一模一样的href属性,链接也一样,而我们只需要一个,这就需要小处理一下了,提供两个思路:

  • 使用BeautifulSoup方法单独提炼出一个链接
  • 两个链接都提炼出来,放进set集合中去重

这里博主用的第一种方法。

提取图片链接

同样的过程,图片的链接在<p>标签下的子节点<img>的src属性里,依然使用BeautifulSoup就可轻松解决。

但是这里的网页排版有个问题,就是有的系列中多组图在一页中,而有的系列每页只有一张图,需要翻页查看。

解决方法是不管有没有翻页,都直接遍历该系列下的所有页,通过返回的状态码来判断下一步动作。

好了,解析的任务的分析差不多完成了,下面看看具体代码如何实现的。

代码实现

下载系列链接:

下载图片链接:

下载并储存图片到本地:

多线程队列任务:

注:爬取间隔可以适当再长点,减轻目标服务器的负担,也理解一下辛苦的运维工作人员。

代码比较简单,目的是在实战中掌握正则和BeautifulSoup解析方法,欢迎大家指点和讨论。

完整代码已上传到Github,请参考:https://github.com/xiaoyusmd/Onepiece_crawl_master

更多作品展示

(美女的图当然少不了)

原文发布于微信公众号 - Python数据科学(Python_Spiderman)

原文发表时间:2018-01-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Python数据分析笔记

本书中推荐了edm和ipython作为数据分析的环境,我还是刚开始使用这种集成的环境,觉得交互方面,比传统的命令行方式提高了不少。

1553
来自专栏小轻论坛

3个少有人知的word小技巧,5秒学会,超实用!

一提到娱乐明星八卦、军事野史鸡汤,大家都迫不及待乖巧等听,哪怕挤出吃饭睡觉时间也要认真关注。提到工作学习技能、素质锻炼提升,很多人就连连摆手一脸抗拒,没时间没精...

682
来自专栏极客生活

python爬虫隔一段时间一乐之海子的诗

每隔一段时间(一周到一个月)拿出1到2天来做一个好玩的东西,不求回报,只为快感。 前两天刚买了一本电子书《海子的诗》,晚上读了快一半,好多诗里面都提及了麦子和...

981
来自专栏CDA数据分析师

Python进阶学习之阅读代码

起因 最近在公司的任务是写一些简单的运营工具,因为是很小的工具,所以就用了github上面的一个开源项目flask-admin,可以省去很多的事情。 但是,这个...

2837
来自专栏牛客网

今日头条三面面经

4.       优先队列的底层数据结构?插入和删除一个节点的时间复杂度是多少? 

9102
来自专栏向治洪

Android Project Butter分析

一 背景知识介绍 随着时间的推移,Android OS系统一直在不断进化、壮大,日趋完善。但直到Android 4.0问世,有关UI显示不流畅的问题也一直未得到...

2809
来自专栏GopherCoder

专栏:007:xpath使用及其实战

1403
来自专栏华章科技

独家 | Python数据分析入门指南

有一个朋友最近问到这个问题,我觉得把它公开出来对其他人也会有帮助。这是给完全不了解Python而想找到从零到一的最简单的路径的人的建议:

1163
来自专栏PPV课数据科学社区

数据流编程教程:R语言与DataFrame

DataFrame DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量。 一. DataFrame数据流编程 ? 二....

48312
来自专栏iOSDevLog

Unity 3D 开发《王者荣耀》:英雄移动地图英雄

2623

扫码关注云+社区

领取腾讯云代金券