sina的app上,主要就是去分析这两个网站中html页面,然后写相对应的正则表达式。其实很无脑,基本上就是看一张html,写几个正则表达式就好了。
那说到正则表达式,可能很多人都听过,而且我们也一直在用这个技术,就算编译代码对代码中你写的变量名是否合法可以进行分析。例如C++的变量
名不允许以数字开通,也不允许某些奇奇怪怪的符号,那可以写成 word=[a-z]*[a-z|0-9]*(只是举个简单的例子)。所以需要识别这个正则表达式就需要状态机,状态机用的很广泛,可以对某些复杂逻辑的程序进行简化,网络协议中TCP就需要专门的状态机进行描述,不然大家都会晕了。状态机就是一个状
态迁移的概念,比如我们有一个变量叫做”ab3 “,状态机初始为0状态,然后扫描”ab3 “,当读到a时,相当识别一个[a-z]字符,状态可以迁移到0(这里为
什么还是0状态的原因,后面会讲),识别b,还是0状态,识别3还是0状态,识别“ ”迁移到1状态(结束状态),完成了识别。
------------------------------------------------
那么正则表达式可以有3类:
顺序类:abc
循环类:[a-z]*
分支类:a|b
----------------------------------------
其实也就对应了3种状态机的节点
顺序类识别: 0->1->2
循环类识别: 0->0 (这就是之前状态为什么还为0的原因)
分支类识别: 0->1;0->2
-----------------------------------------------
最后写过程序的同学会发现,大部分程序,c/c++,java,PHP,js,python.....都只有是写3种语句
循环
分支
顺序
----------------------------------------------
写了这么多年的同学是不是写厌倦了么。。。。。所以大部分程序员有n年
开发经验的也应该只写过这3种语言!那为什么只要这3种结构就可以搞定你的工作呢?这个问题dij(计算机科学家,这里的科学家和某些科学家
不是一个概念,不一样的地方自己脑补)讨论过,wikipedia上可以看看: http://en.wikipedia.org/wiki/Structured_programming
相当与是同构的概念。
-----------------------------------------------
了解了上面的工作后,后续的任务就很简单了,我用python的regx,也就是看一张html写几个正则表达式,图片url,题目等信息爬下来
后存到sinaapp的MysqL,不需要建什么索引,直接搞定。其实最有创新的是微信平台的名字“幕微”,如此有想象力的名字是我们宿舍的
同学想的,我觉的他的名字顶我学了1年的知识。
------------------------------------------------
微信公共帐号:Movie_Studio
二维码看这里:http://moviestudio2.sinaapp.com/
还有一个罗嗦一下,大家爬网站不要太狠,一次发太多get请求会被查封的,你看上面为什么是moviestudio2你就明白了
因为moviestudio.sinaapp.com 豆瓣已经禁止我们访问了。
-----------------------------------------------------
接下来上图和上代码:
代码:https://github.com/NanYoMy/movie_studio 原文链接:https://www.f2er.com/regex/361082.html