python discuz 爬_简单易懂爬虫入门,从一个论坛爬起。[play with python]第1.2期

“ 本期讲一下爬虫,以及如何构建一个简单的爬虫来爬mobile01论坛的数据”

开篇先贴一段维基百科: 网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。[1]

百科的更多内容就不贴了,有兴趣的同学可以自己去查。爬虫这个名字就很形象,网页和网页之间构成了错综复杂蜘蛛网一般的连接,而爬虫则是在网上穿梭的蜘蛛(spider)。

互联网的爬虫无处不在,春节期间频频亮相朋友圈的抢票软件、微博大v留言区里整齐划一的僵尸粉、什么值得买购买就返利、百度google返回的搜索结果...背后都有爬虫在默默运作。

爬虫的流量甚至构成了网络流量的主要部分。根据imperva的报告Bad Bot Report 2020[2],恶意爬虫流量就占据了互联网流量的24.1%,如果算上搜索引擎的爬虫,比例会更高,甚至超过50%[3]。

imperva 2016年的网络流量报告

也许你认为的爬虫是这样的

但实际上的爬虫是这样的(密恐患者请跳过)

说了一通爬虫的介绍,回到主题。

mobile01论坛[4]是台湾的一个活跃度很高的论坛,类似于贴吧,里面的帖子真实的反映了台湾网民的所思所想,帖子、留言数据更是值得收集的繁体中文NLP的珍贵语料,我之前的文章mobile01论坛舆情分析之一:如果有数据的话就先探索一下吧。[play with python]第1.1期也用到了这一批数据,而收集它们,就用上爬虫了。

构建一个爬虫,需要几步?形象的说,可以把爬虫看做一个浏览网页的机器人,它所做的事情,无外乎:打开网页,把网页上它感兴趣的数据保存下来,打开下一个网页。就这么简单。

徒手构建一个爬取mobile01论坛的爬虫,只需要做:

1、请求器:负责请求网页内容,并将请求结果发送给解析器

2、解析器:解析网页内容,得到感兴趣的数据,保存数据和/或发送url给调度器

3、调度器:组织哪些url需要爬取并分配给请求器 功能示意如下(渣绘图)

通过观察论坛的组织规则,分为列表页和正文页,通过请求和解析列表页可以得到帖子正文的url,然后请求正文页并解析获得帖子留言数据。

例如,通过解析以上页面,可以得到下图的数据。

代码部分就不放了,有兴趣的同学可以参考github repo,写一个爬虫就是这么简单。

当然,徒手写爬虫对于小需求尚可以满足,毕竟不用考虑调度、分布式等问题,但应付大规模的爬虫需求,就显得捉襟见肘。

这里隆重推荐一个爬虫框架:Scrapy[5]。好用。

最后提醒一下,如果要自己写爬虫,注意法律风险哦。

[手动狗头]

欢迎关注本人公众号,探索生活中的 Python 应用。

系列预告

[play with python]系列文章将写生活中一些python的小应用,主题大概包括数据分析、自然语言处理、任务自动化等,争取周更,欢迎关注。

相关文章吴庭:mobile01论坛舆情分析之一:如果有数据的话就先探索一下吧​zhuanlan.zhihu.com吴庭:发现一个有趣的论坛,然后...系列预告+有奖互动​zhuanlan.zhihu.com

References

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值