前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为了让大家更好地学习python爬虫,我们做了一个“靶子”

为了让大家更好地学习python爬虫,我们做了一个“靶子”

作者头像
Crossin先生
发布2020-07-03 17:22:53
8700
发布2020-07-03 17:22:53
举报

1

很多学习 python 的同学应该都听说过“网络爬虫”的概念,也可能听说过用 python 写网络爬虫很方便

那么什么是爬虫?百度百科上是这么定义的:

网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

一般来说,日常可能会用到的爬虫场景有:

  • 从网页图库里批量下载图片
  • 采集企业/产品名录
  • 收集某部电影下的评价
  • 获取某个球星的比赛数据
  • ……

可以看出,爬虫能替人去解决重复、繁琐的网上数据/资源下载任务。除了这种“一次性”下载的事情,爬虫也可以长期监控某个数据源,比如:

  • 记录某商品的每日价格变动
  • 定时检查某商品有没有到货
  • 统计平台作者的粉丝数量变化
  • 监控热搜榜
  • ……

此外,还有一些模拟网络请求的操作,虽然不算“爬虫”,但所用的技术是类似的,比如:

  • 自动签到打卡
  • 一键发帖机
  • 网页自动回复机器人
  • ……

2

随着大家逐渐认识到“大数据”的重要性,爬虫也是越来越多的被应用到商业之中,学习爬虫、使用爬虫的人越来越多。但某些人对爬虫的滥用也给数据的所有者带来了不少麻烦,一方面,商业数据牵涉到版权、知识产权、商业机密等敏感信息,爬虫经常成为侵权的工具;另一方面,无节制的爬虫请求造成网站的负载激增,甚至影响到正常用户的使用。因此,现在稍微有一定规模的网站,都会对爬虫做不同程度的“反爬”限制,甚至会通过法律途径制止侵权的爬虫行为。

这些限制本身没什么不好,但对于爬虫学习来说,却无形中提高了学习的门槛

以前,我们会整理一些简单、“友好”的网站讲解爬虫的基本操作和技巧,比如:

  • 从DB网的接口抓取电影信息
  • 从JD网抓图片
  • 从QS百科抓段子
  • 从WY云抓歌词
  • 从ZL抓招聘岗位
  • ……

但如今,这些案例没一个是轻轻松松就能搞定的,什么 header、cookie、key、ajax……没一定的经验是很难上手的。

而且,就算你看明白了一个教程,但只要目标网站一个小更新,原来的示例代码就又失效了,你又只能对着无法成功运行的代码陷入自我怀疑。

3

我们编程教室一直有在做爬虫相关的案例和教程。正因为目睹了太多初学者的困扰,我们决定搞一个“靶子”项目

在这个项目里,我们做了 11 个任务,每个任务都是一组可以被抓取的接口或网页,难度由低到高:

第一关:抓取 API

第二关:批量下载图片

第三关:抓取文章列表页

第四关:抓取文章详细页

第五关:AJAX 异步数据获取

第六关:限制频率、添加 headers 抓取

第七关:登录后抓取

第八关:模拟 post 请求

第九关:数字图片

第十关:前端加密

第十一关:换 ip 抓取

前面的关卡是对爬虫基本技术的练习,可以避免真实网站的“反爬”对初学者的干扰;而在后面的关卡中,我们增加了一些常见“反爬”限制,让学习者逐步接受“现实的毒打”。

这个项目就好比武侠小说中少林寺的“木人巷”,你把这一系列任务通关了,之后行走江湖才更加游刃有余。

我自己给这个项目取名为“Purple Mountain”,也就是“紫金山”。因为在我的家乡有一座紫金山,每天都有很多人去“爬”,也不收门票,白爬!我觉得用来形容这个项目很形象?

项目代码及文档的下载方法见文末说明

4

这个项目要怎么用?

你需要准备 3 样东西:

  • python 3(建议 3.5 以上)
  • django 2.1.5
  • django-tinymce4-lite 1.7.5

django 和 django-tinymce4-lite 可以通过 pip 安装,安装时指定版本:

代码语言:javascript
复制
pip install Django==2.1.5
pip install django-tinymce4-lite==1.7.5

如果你的电脑上已有其他版本的 django,建议新建一个虚拟环境来安装。

准备完之后,下载项目,然后在项目目录里执行:

代码语言:javascript
复制
python manage.py runserver 

运行项目,如果看到类似下图的界面,说明项目运行成功:

项目运行成功后,在浏览器中打开网址:

http://127.0.0.1:8000/

看到如下图的网页,就可以按照关卡任务,开始爬虫抓取练习:

你要抓取的网站名就是 127.0.0.1:8000

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档