Mathematica 获取豆瓣图书top250,正则表达式
来源:互联网 发布:淘宝客服欢迎用语 编辑:程序博客网 时间:2024/04/27 17:06
mathematica的Import除了可以从文件中导入数据之外,还可以方便的从任何可访问的网页中导入数据,例如
Import["https://book.douban.com/top250"]
通过加入Elements,可以查看可用的元素
Import["https://book.douban.com/top250", "Elements"]{"Data", "FullData", "Hyperlinks", "ImageLinks", "Images", "Plaintext", "Source", "Title", "XMLObject"}
为了获取豆瓣图书的top250,我们需要解析它的html页面元素,因此
Import["https://book.douban.com/top250", "Source"]
这将得到一个html格式的源码(当然,你也可以通过浏览器查看源代码)
找到其中关键的一行
<a href="https://book.douban.com/subject/1770782/" onclick="moreurl(this,{i:'0'})" title="追风筝的人"
这是一个超链接,里面含有书的标题以及对应页面,因此,我们需要从整个html中取出这些元素,注意,你的正则表达式应该尽量匹配这些元素,利用mathematica的StringCases,可以方便找到这些元素
dbhtml = Import["https://book.douban.com/top250?start=0", "Source"];list = StringCases[dbhtml, RegularExpression["<a href=\"https://book.douban.com/subject/.+\""]];
第一行,获取整个html页面,
第二行,取出href超链接
生成的是一个list,结果如下
"<a href=\"https://book.douban.com/subject/1770782/\" \onclick="moreurl(this,{i:'0'})" title=\"追风筝的人\"", "<a \href=\"https://book.douban.com/subject/1084336/\" \onclick="moreurl(this,{i:'1'})" title=\"小王子\"", "<a \href=\"https://book.douban.com/subject/1008145/\" \onclick="moreurl(this,{i:'2'})" title=\"围城\"", "<a \href=\"https://book.douban.com/subject/25862578/\" \onclick="moreurl(this,{i:'3'})" title=\"解忧杂货店\"", "<a \href=\"https://book.douban.com/subject/1082154/\" \onclick="moreurl(this,{i:'4'})" title=\"活着\"", "<a \href=\"https://book.douban.com/subject/3259440/\" \onclick="moreurl(this,{i:'5'})" title=\"白夜行\"",..........}
利用StringReplace替换规则,替换想要的结果
list = StringReplace[list, RegularExpression[".+\"(.+)\".+\"(.+)\""] -> "-$1-$2"];
生成结果
{"-https://book.douban.com/subject/1770782/-追风筝的人", \"-https://book.douban.com/subject/1084336/-小王子", \"-https://book.douban.com/subject/1008145/-围城", \"-https://book.douban.com/subject/25862578/-解忧杂货店", \"-https://book.douban.com/subject/1082154/-活着", \"-https://book.douban.com/subject/3259440/-白夜行", \"-https://book.douban.com/subject/1046265/-挪威的森林", \"-https://book.douban.com/subject/3211779/-嫌疑人X的献身", \"-https://book.douban.com/subject/2567698/-三体", \"-https://book.douban.com/subject/1017143/-不能承受的生命之轻", \"-https://book.douban.com/subject/1007305/-红楼梦", \"-https://book.douban.com/subject/1016300/-梦里花落知多少", \"-https://book.douban.com/subject/1040771/-达\[CenterDot]芬奇密码", \"-https://book.douban.com/subject/20427187/-看见", \"-https://book.douban.com/subject/6082808/-百年孤独", \"-https://book.douban.com/subject/5275059/-1988:我想和这个世界谈谈", \"-https://book.douban.com/subject/1461903/-何以笙箫默", \"-https://book.douban.com/subject/1200840/-平凡的世界(全三部)", \"-https://book.douban.com/subject/1141406/-简爱", \"-https://book.douban.com/subject/1041007/-哈利\[CenterDot]波特与魔法石", \"-https://book.douban.com/subject/10554308/-白夜行", \"-https://book.douban.com/subject/3066477/-三体Ⅱ", \"-https://book.douban.com/subject/1068920/-飘", \"-https://book.douban.com/subject/4238362/-送你一颗子弹", \"-https://book.douban.com/subject/5363767/-三体Ⅲ"}
注意,以上仅仅只是一个页面(第一页),那么,如何进行翻页呢?
答案是显然的,你只需要将以上步骤写成一个函数,然后对于不同的页面进行调用即可
https://book.douban.com/top250?start=0https://book.douban.com/top250?start=25https://book.douban.com/top250?start=50https://book.douban.com/top250?start=75.......
阅读全文
0 0
- Mathematica 获取豆瓣图书top250,正则表达式
- mathematica爬取豆瓣Top250
- 爬取豆瓣Top250图书【Beautiful】
- python爬取豆瓣图书Top250
- 爬取豆瓣图书Top250书籍信息
- [Python爬虫]2.豆瓣图书Top250
- 用R批量下载豆瓣top250图书
- python爬虫实现获取豆瓣图书的top250的信息-beautifulsoup实现
- 利用beautiful soup获取豆瓣top250
- Python爬虫获取豆瓣电影TOP250
- 简单的python爬虫爬豆瓣图书TOP250
- Python爬虫入门 | 4 爬取豆瓣TOP250图书信息
- 爬虫学习--豆瓣top250
- 正则表达式图书
- python爬豆瓣电影Top250
- Python爬虫豆瓣电影top250
- 豆瓣电影Top250基本信息抓取
- 豆瓣电影Top250基本信息抓取
- 设计模式---工厂方法模式
- iOS-Failed to set (placeholder) user defined inspected property on (UITextView)
- Linux网络实时流量监测工具iftop的安装使用
- HEVC代码学习26:率失真代价类TComRdCost
- Debug your PHP in Docker with Intellij/PHPStorm and Xdebug
- Mathematica 获取豆瓣图书top250,正则表达式
- LeetCode: twosum
- MXNet 符号编程
- 环
- Arcgis javascript那些事儿(十八)——地图标注添加
- Swift实现IOS界面的跳转
- Spring annotation中,@resource如何找到实现类的
- 软件测试之文档测试
- CentOS 6.4安装(超级详细图解教程)