利用Matlab正则表达式爬取网页数据
来源:互联网 发布:火山中文移动编程官网 编辑:程序博客网 时间:2024/05/21 23:20
如果我们经常需要从网上搞一些数据,如果你只会使用CTRL+C 然后CTRL+V,你就out了,假使你是搞计算机的那就更加out了,网上的数据是搭载在计算机程序上的,既然是在计算机程序上,如果我们能得到获得其相应权限,数据自然不是问题。下面就以利用Matlab来获取网页上的数据为例来简单说明一下,其他程序语言如Python也行,没试过。
Matlab提供了urlread函数来获取网页内容,而想从网页内(好长好长的文本字符)获取想要的数据,需要使用Matlab中的正则表达式函数regexp,两个函数的具体使用内容比较多,见help吧。我以读取网页上的彩票数据为例,彩票,希望大家都能中大奖发大财,我这里想获得七星彩数据。
1、进入彩票大厅->历史开奖数据,如下图:
2、在当前页面空白处右键单击,然后选取:查看源代码,之后会弹出如下脚本文件(这样做主要是查看正则表达式的表示格式)
发现没有我们要的数据就在这里了,我们如何取出来啦,根据正则表达式的语法,我们知道类似<spanclass='ball_5'>7</span> 就是一个正则式的具体化了,其他的号码形式类似,所以在此我要找的正则式就是<spanclass='ball_5'>(/d)</span> ,在此稍作解释,这里的(/d)表示只要遇到字符串的两边的形式和模板一样,中间含有一个0-9之间的一个数字,那我们的正则式就标记一下在字符文本中的一个地方发现了有我们想要的数字了。当正则式走完整个文本后,就会获得当前文本中所有满足这样的数字,然后我们取出来数字就行了,这个看一下程序就很清楚了。
3、前面是准备工作,现在编写Matlab程序,获取数据
clc;clear ;tic;%网页地址WebSite='http://chart.cp.360.cn/kaijiang/qxc?lotId=110022&spanType=0&span=30&r=0.5169432614929974#roll_132';[sourcefile,status]=urlread(WebSite);%正则表达式,不同的网页不同的数据不一样的,所以要查看一下网页源码呀expr1='<span class=''ball_5''>(\d)</span>';%expr1= '<span class='ball_5'>0</span>';%% 正则表达式匹配,根据help文件知道:%'match':Text of each substring that matches the pattern in expression,%翻译过来就是 :把每一个和正则式匹配上的子字符串都存放下来%Text of each captured token in str%翻译过来就是 :把每一个和正则式匹配上的标记(在这里就是数字)都存放下来%这个函数其他使用比较多,见help吧%在此我们要的数据都是存放在data_tokens cell文件中的,他们是字符形式[datafile,data_tokens]=regexp(sourcefile,expr1,'match','tokens');a=data_tokens';[m,n]=size(a);data=zeros(m,n);for i=1:m data(i)=str2double(a{i}{1});%字符转化为数字end%七星彩是七个数字为一组的,需要把数据重新组织一下Data=reshape(data,7,m/7);Data=Data';SourceData=Data;toc;好了,自此我们就完成了从网页上获取数据的过程。
- 利用Matlab正则表达式爬取网页数据
- 实战 利用Xpath爬取网页数据
- 利用正则表达式将html网页数据变成Web Service
- 利用正则表达式将html网页数据变成Web Service
- 利用正则表达式提取网页中Table内的数据
- Java正则表达式爬取网页,贴出完整代码
- 正则表达式分析网页数据
- 利用Requests爬取图片与网页数据
- 第一次学会使用正则表达式爬网页,纪念下,下一步学习动态网页爬取
- ObjC利用正则表达式抓取网页内容
- 利用正则表达式抽取网页信息
- 易语言正则表达式取数据内容
- java正则表达式匹配网页页面数据
- 正则表达式的应用—爬取网页上的email地址
- java爬取网页内容 简单例子(1)——使用正则表达式
- python实例1--用正则表达式爬取静态网页上的图片
- Python网页抓取正则表达式应用练习-爬取基金信息
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结
- Haar特征
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
- C++笔试题目大全(笔试宝典)
- 在centos和redhat上安装docker
- 学好Excel很重要,靠它撩妹少烦恼
- 利用Matlab正则表达式爬取网页数据
- Spark2.x集群安装
- retrofit+okhttp+rxjava
- [编程题]数字分类 (20)
- 程序员技术练级攻略
- 数据库记录删除方式
- Springmvc 使用 AbstractExcelView 导出excel
- 基础笔记(二):设计模式摘录
- C语言(Head First C)-6_2:结构、联合与位字段:结构更新、联合、枚举和位字段