首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MATLAB与爬虫

一年近半,发现今年写的帖子更多侧重于爬虫与数据分析,有分析房价的,论坛的,还有就业的。

有兴趣的朋友,可以点击下方的文章链接。

有不少朋友会在公众号后台私信我,问我能不能分享爬虫的源代码。

其实在“MATLAB论坛不可错过的200篇帖子”中,我已经分享了这篇帖子的源代码。用MATLAB爬虫的原理,基本上都是一样的,举一反三。

今天就来聊一聊,如何使用MATLAB进行爬虫。

01

为什么爬虫

事实上,对于爬虫而言,最重要的是,为什么要做这件事,你想知道什么,你想分享什么观点?

一个好的出发点,一颗强烈的好奇心,比起爬虫或是技术本身,要更有意义许多。

曾经在写“什么工作会用到MATLAB”这篇帖子的时候,在此之前,有不少学生会私信问我,即将要毕业了,又特别喜欢MATLAB,想知道什么样的工作会用到MATLAB。

老实说,我只是一个汽车行业的工程师。MATLAB的用途广泛到渗透各个行业。对于土木专业、金融专业亦或是其他专业的学生,如果我贸然以一个汽车行业从业者的经验发表观点,或多或少显得十分的不专业以及不负责任。

为了不让自己面对这类问题时感到尴尬或是些许愧疚,于是这就成了我写这篇爬虫文的出发点。

所以,你了解自己爬虫的出发点么?

02

要抓取哪些信息

在确定了爬虫主题之后,不要马上撸起袖子就开始写代码,而是要思考,如何来分析这个主题,都需要抓取哪些信息来完成这次分析。

在写“如何看待MATLAB论坛的发展”的帖子时,抓取的数据是百万级别的信息,这个完全不同于其他几篇轻量级的帖子。

如果在数据少的情况下,即使期间发现考虑的信息不完善,想要再添加其他方面的信息,完全可以再重新爬一边。可是在面对百万级别甚至更高级别的数据时,倘若考虑不全面,爬取的数据不足以支承分析论证,再爬一遍,所花费的时间,可就是原计划的数倍。

在爬虫过程中,时间的成本,很无奈很头疼,然后又是不得不面对的一个问题。

03

如何爬虫

MATLAB爬虫的过程总体上来讲,非常简单,包括两个步骤,分别是读取网页与抓取信息。

读取网页所使用的函数是urlread或者是webread。对这两个函数并不熟悉的朋友,不妨可以通过help查看用法,然后可以通过一个简单的网址,去对比读取到的字符串和网页源码以及网页之间的关系。

关于抓取信息,考验的就是正则法的使用。正则法是最近两年我在做Simulink仿真之余,个人认为对自己最重要的一个技能。

关注我比较久的朋友,相信应该见过去年我写的第一篇爬虫帖,也是关于上海房价的。帖子的最后有当时写的源代码,代码丑陋程度让我时至今日都无法再去回顾。因为当时对于正则法的运用只是处在特别初级的地步。

在今年写的关于上海房价的爬虫帖中,我发了一张一年前后的代码对比图,更为精简。

正则法不仅仅只适用于爬虫,同样在平时数据处理的工作中会被使用到。所以,对于平时不爬虫的朋友,我的建议是,不管你之前是否有接触过正则法,先在MATLAB的Help里查看一下regexpi的用法和例子,并加以练习。

相信我,正则法会是一个重要程度不亚于Word,Excel等办公软件的一项技能。

04

MATLAB爬虫需要注意的细节

在第二点中,我阐述了,面对百万级别或是更高级别的数据时,在爬虫之前需要思考清楚爬取哪些信息。

同样,还需要考虑清楚的是,以什么形式承载这些数据。如果所有信息都以cell的形式放在Workspace中,对于内存来说,这将会是一个天大的灾难。同时,在对于数据以mat格式文件的存储读取时,一样会击垮你的耐心。

在“Matlab如何制作简易版同花顺”这篇帖子中,我已经论证过,对于同样的数据,cell格式要比矩阵形式耗费更多的内存以及更长的处理时间。在64位系统上cell中的每一个元素都至少要占112字节,也就是说即使是空也要占这么多,所以如果每个cell元素中存储少量元素是不划算的。

那如何避免?

举一个简单的例子,在“如何看待MATLAB论坛的发展”这篇帖子中,用户等级分类为新手、入门、中级等等。总的来说,类别总是有限的。那么就可以定义两个变量,其中一个变量涵盖的信息是所有的类别信息,可以以cell格式存储。而另一个变量就可以定义为每个用户的等级类别在第一变量中所属的Index。最终百万级别的用户等级数据,就完全从本该cell形式转换为double形式的矩阵。

这是我在一篇篇爬虫过程中汲取的一些经验,希望能够给同样对爬虫感兴趣的朋友一些帮助。

05

网站有反爬虫机制,如何应对?

这个问题是爬虫过程中总是难以回避的问题。

大概在一个月前,我想写一篇帖子,题目我都想好了,叫做“小红书,请把我老婆还给我”。

没错,那个时候,我想抓取小红书的内容。因为我发现那段时间,我老婆变得不爱说话了。一回到家,就会躺在沙发上玩手机,跟我的沟通越来越少。

而我,心急,干跺脚。我假装不经意的瞄了一眼,发现硕大的三个红字“小红书”。

然后,我就想知道,小红书到底是啥,里面写的都是什么内容,会不会有危害到我小金库的文章。

于是,我就开始爬虫小红书,一顿操作猛如虎,结果被小红书的反爬虫机制禁了IP。戏剧的是,我老婆也因此登不上小红书了。万幸。

上述看似段子般的事,是实实在在发生在我身上的。即使最后没有写完那篇帖子,但是那段时间对于我而言是成长特别快速的时期。我实现了在MATLAB中如何替换IP从而避开网站的反爬虫机制。

通过下面的两行代码能够实现IP和端口的设置,这个方法是我在google上搜索了很久才找到的。国内的网站搜不到,好像是因为国内很少会有人用MATLAB进行爬虫或是设置IP。

在知道如何在MATLAB进行IP和端口设置之后,剩下的唯一的问题,就是关于IP代理池的问题。虽然在网络上可以收到很多代理IP,但是这些IP的质量普遍都不是很高,大部分都是过期的。

在这里,我介绍一下比较靠谱的付费IP代理,叫做“蘑菇代理”。这个网站是我在知乎中关于代理IP的帖子中找到的,亲测,效果不错。

06

爬虫之后,如何进行数据分析?

在数据分析方面,我没有发言权,因为不是专业做数据分析的。不过我挺愿意分享这段时间我在这方面的一些心得。

数据分析的魅力之处在于,在分析数据之前,你永远不知道结论。

你难以想象几个工程师会在午餐的时候争论上海房价是涨是跌,就跟幼儿园的小孩在争论到底孙悟空牛逼还是奥特曼厉害一样。甚至于在我爬虫上海房价之前,我都不知道在过去的一年,是涨了还是跌了。大家都是读书人,能用数据说话,就别空口逼逼了。

在数据分析的过程中,我特别大的感触是,Excel真的是牛逼,在数据可视化方面,要甩MATLAB好几条街。别的软件我没用过,大家别吐槽我见识短。

图表在我看来是一件仅次于个人观点结论的事。许多人可能会厌倦了用无数文字堆砌的现象描述,因为简单明了的一个图表足以说明现象。

以上就是我到目前为止的爬虫心得,相信在未来很长一段时间内,我还会继续写爬虫帖,因为我确确实实感受到了数据分析的精彩之处,以及我迫切期待我在这方面的长足进步。

最后,祝各位,周末愉快!

微信名:打浦桥程序员

微信ID:dpqcxy

如果你喜欢这篇帖子,欢迎打赏。你的支持,是我写作最大的动力,谢谢支持!

打浦桥程序员,

汽车行业的工程师,

更喜欢用MATLAB看世界。

更多联系方式

知乎:打浦桥程序员

知乎专栏:MATLAB如何

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180406G1E9J700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券