专栏首页Crossin的编程教室为了让大家更好地学习python爬虫,我们做了一个“靶子”

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

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 安装,安装时指定版本:

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

本文分享自微信公众号 - Crossin的编程教室(crossincode),作者:Crossin先生

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-01

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【我问Crossin】爬虫学习该如何入门?

    1 程序中使用了列表,运行过程中报错: IndexError: list index out of range 这是由于列表的下标索引值超过了列表的总长度。 ...

    Crossin先生
  • 【Python 第65课】pickle

    在之前的课程中,我们有讲到通过文件来保存、中转数据(参见第31、32、33课)。在使用文件存储时,通常需要对数据进行一些处理,按照一定的规范把数据整理成文本,再...

    Crossin先生
  • 【每周一坑】用代码给图片配上文字

    我们的『每日一坑』栏目里都是一些练手的小题目,难度不高,适合新手用来熟悉编程。如果想要更复杂的大项目,可以上我们的实验室栏目 lab.crossincode.c...

    Crossin先生
  • 4 幅思维导图:学会 Python 爬虫

    原创:ZOE酱 https://zhuanlan.zhihu.com/p/36204695

    统计学家
  • 【报告】2018上半年互联网恶意爬虫分析

    导语:互联网最激烈的对抗战场,除了安全专家与黑客之间,大概就是爬虫与反爬虫领域了。据统计,爬虫流量早已超过了人类真实访问请求流量。互联网充斥着形形色色的爬虫,云...

    腾讯云基础安全
  • 推荐一条高效的Python爬虫学习路径!

    如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,...

    python学习教程
  • python3 爬虫工作原理

    网络爬虫我们一般简称为爬虫或者蜘蛛,它是一个自动抓取网络信息的程序或代码脚本。 如果我们把互联网看成一张巨大的蜘蛛网,上面链接着各种各样的网页数据,爬虫就像蜘蛛...

    python鱼霸霸
  • Python爬虫与反爬虫左右互搏(带视频)

    爬虫与反爬虫是两类互斥的应用,它们争斗了多年。就像病毒程序与反病毒程序,永远是先有病毒程序,再有反病毒程序一样,爬虫程序总是先诞生,然后网站服务商就会想尽办法不...

    蒙娜丽宁
  • Python爬虫之爬虫概述

    网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。

    海仔
  • 找python爬虫小项目?github给你准备好了!

    即使我们都是程序员,但我们也并非都会修电脑,都会做酷炫的ppt,都会优化系统卡顿。其实程序员也是分行业、分专业的,就像医生也分内外科、呼吸科、神经科神的。

    efonfighting

扫码关注云+社区

领取腾讯云代金券