13

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

 3 years ago
source link: https://zhuanlan.zhihu.com/p/153325855
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

上海交通大学 计算机应用技术硕士

1

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

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

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

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

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

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

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

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

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

2

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

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

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

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

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

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

3

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

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

  1. 第一关:抓取 API
  2. 第二关:批量下载图片
  3. 第三关:抓取文章列表页
  4. 第四关:抓取文章详细页
  5. 第五关:AJAX 异步数据获取
  6. 第六关:限制频率、添加 headers 抓取
  7. 第七关:登录后抓取
  8. 第八关:模拟 post 请求
  9. 第九关:数字图片
  10. 第十关:前端加密
  11. 第十一关:换 ip 抓取

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

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

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

项目地址:crossin/purple_mountain

4

这个项目要怎么用?

你需要准备 3 样东西:

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

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

pip install Django==2.1.5
pip install django-tinymce4-lite==1.7.5

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

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

python manage.py runserver 

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

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

http://127.0.0.1:8000/

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

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

5

“紫金山”项目地址:crossin/purple_mountain

特别说明:我们的“码上行动”课程中,也包含了爬虫相关的教程学习小组。另外还会提供线上版本的“紫金山”供练习使用,省得自己安装运行,随时随地可抓。

最新一期爬虫学习小组即将在本周日(7月5日)开始第一次任务,如果你有这方面的需求,可以去了解详情。

爬虫小组只是码上行动课程中的一小部分,整个教学覆盖 python 入门基础多个进阶方向,完全没接触过编程的零基础新手也可以从入门开始循序渐进地跟着我们学习。

获取更多教程和案例,

欢迎搜索及关注:Crossin的编程教室

这里还有更多精彩。一起学,走得远!


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK