mathematica爬取豆瓣Top250
来源:互联网 发布:淘宝红叶运动是正品吗 编辑:程序博客网 时间:2024/05/07 01:36
今天准备讲一下如何使用mathematica写出爬虫
说实话,我也不是很清楚博客应该怎么写,我现在想的是写博客为了以后忘掉的时候可以查阅一下,把我在做这方面遇到的问题和查阅的资料收集一下。
下面就开始讲一下用mathematica爬去网页(静态)
抓取豆瓣相册图片——Mathematica版
上面那个网站是我学习的地方,我觉得写得很明白。
我按我的理解写一下,两个部分:***匹配,翻页***
1.匹配
要爬取一个网页上的特定东西,就必须要找到在哪里,而要做到这些就要用到正则表达式。
比如我要爬取豆瓣Top250电影的影评,首先我们要获得这些电影的地址
可以看到选中的那一行有一部电影的地址
再看一部电影
可以看到电影的地址存放的形式是一样的,那么接下来就容易了
先提取这一个页面上的地址
在mma中可以使用
st = Import[url, "XMLObject"];
来获取网页的格式
可以获得类似上面的形式,看到那个链接了嘛,下面就是要把链接提取出来
在mma中,我们使用Cases来提取
这样就把这一页的链接都获取了
fileAdress = Cases[st, XMLElement["li", {}, {___, XMLElement["div", {"class" -> "item"}, {___, XMLElement["div", {"class" -> "pic"}, {___, XMLElement["em", {"class" -> ___}, {___}], ___, XMLElement[ "a", {"shape" -> "rect", "href" -> src_}, {___}], ___} ], ___} ], ___}] :> {src}, {0, Infinity}];
这个道理懂了以后,要匹配其他的原理也是一样的。
2.翻页
所谓爬虫,不是只能爬取一个网页的。
所以我这里采取的办法是先把在一个网页上爬到的地址储存起来,一个网页爬完后,在从地址池中取出一个地址继续爬,存入新的,当然其中有一些问题,就是怎么判断一个网页有没有爬到。
我这里先讲一下我是怎么爬取下一页的
我们可以看到,在一个页面上就有后面九页的网址,我们要做的就是提取出来(看前面的匹配)
NextPage = Cases[st, XMLElement[ "a", {"shape" -> "rect", "href" -> scr_}, {ToString[num]}] :> {scr}, {0, Infinity}];urlnew = "https://movie.douban.com/top250" <> NextPage;
然后储存起来,最后只要判断是否需要翻页即可,就是有没有到最后一页。
If[Length[NextPage] != 0, Crawler[urlnew, num + 1], Return[]];
这样就能实现翻页了
最后实现的部分效果
这里就把电影的地址全都爬下来了,其实爬取影评的道理也是一样的,应该看了上面的自己也能写。
2016/9/16
以上,所有
- mathematica爬取豆瓣Top250
- Python爬取豆瓣电影top250
- Python爬取豆瓣电影Top250数据
- Python+Scrapy 爬取豆瓣电影排行榜Top250
- python+beautifulsoup爬取豆瓣电影TOP250
- nodejs爬取豆瓣top250电影信息
- Scrapy+mongoDB爬取豆瓣TOP250
- scrapy爬取豆瓣TOP250电影
- 爬取豆瓣Top250图书【Beautiful】
- python爬取豆瓣图书Top250
- Python爬取豆瓣电影top250
- 爬取豆瓣图书Top250书籍信息
- scrapy ------ 爬取豆瓣电影TOP250
- python爬取豆瓣电影Top250
- 使用requests爬取豆瓣电影top250
- 利用scrapy爬取豆瓣top250
- scrapy爬取豆瓣top250电影
- python爬取豆瓣电影top250
- android 重写RadioButton自定义选中图片
- 机器学习实战 第八章 预测数值型数据:回归(Regression)
- css 自定义字体的使用方法
- git
- iOS NSURL来请求图片(delegate 和block两种方法)
- mathematica爬取豆瓣Top250
- PATA-1059Prime Factors (25)
- 丑数
- javascript匀速动画和缓冲动画
- 给listview或gridview设置动画效果
- 有趣的链表相关题型
- MinGW64 Compile Environment Setup On Win7-x64
- JS中Date对象getYear()和getFullYear()的区别
- Emacs Configuration