1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 网页抓取信息(php正则表达式 php操作excel)

网页抓取信息(php正则表达式 php操作excel)

时间:2024-03-20 16:55:04

相关推荐

网页抓取信息(php正则表达式 php操作excel)

后端开发|php教程

网页抓取信息(php正则表达式、php操作excel)

后端开发-php教程

1.问题描述

课表查询源码 html,阿发你好ubuntu,爬虫的应用推荐,php中$_,seo咨询 吉林lzw

实现对固定网页上自己需要的信息抓取,以表格形式存储。我是拿wustoj上的一个排行榜来练习的,地址:wustoj

asp美女图片网站源码,vscode不够强大,4k屏 ubuntu,查询tomcat 进程,sqlite怎么设置时间,竞店监控 插件,前端最主流框架选择,爬虫试卷答案英语,php处理数据,seo关键词文章代写,搬家公司网站模,网页qq客服,个人书法网站 织梦模板,苹果页面布局怎么好看,毕业设计物业管理系统,爱情网站程序下载lzw

匿名社区网站源码,vscode画表格,ubuntu系统 介绍,查看tomcat位,sqlite3将缓存写入,花盆土里的爬虫叫什么虫子,php root 权限,宁国谷歌seo营销公司,政府通用网站html模板下载,易语言 取外部网页选中文本,网站制作模板程序lzw

2.思路

网页自己就简单学习了一下php,刚好用它来做点事情吧,我的想法是这样的:

(1)查看网页源代码并保存在文件中。

(2)根据需要的信息写出正则表达式,读文件,根据正则表达式来提取需要的信息。写正则表达式的时候最好分组,这样提取起来就方便了很多。

(3)对excel操作,将提取的信息以excel的形式输出。

比较好的开源php处理excel类链接:点击打开链接

3.体会

^是指要是原字符串的开头,$是指要是原字符串的结尾。

空字符不一定是空格。

用来分组是好方法,如preg_macth_all(/$pattern/,$subject,matches)。

matches为二维数组,如果没有_all,则只会匹配第一部分,是一维数组。

$matches[0]保存完整模式的所有匹配。$matches[1]保存第一子组所有匹配,即所有匹配的第一部分。

中文匹配串我用的这个$patt_ch=chr(0x80).”-“.chr(0xff)。

4.代码

<?phpheader("Content-Type: text/html; charset=utf-8");$url = "http://acm./contestrank.php?cid=1014";$result=file_get_contents($url);$file=fopen("content.php","w");fwrite($file,$result);$file=fopen("content.php","r");$patt_ch=chr(0x80)."-".chr(0xff);//1<td$rankpatt="()([0-9]+|\*)(<td)"; // part2//team30_姓名$namepatt="()(\*{0,1}team[0-9]+)(_)([$patt_ch]+)()"; // part2 part4//$namepatt="(team[0-9]+)(_)([$patt_ch]+)"; 也可以用这个直接匹配"team_姓名"//7$problempatt="()([0-9]+)()";//Include classrequire_once(Classes/PHPExcel.php);require_once(Classes/PHPExcel/Writer/Excel.php);$objPHPExcel = new PHPExcel();//Set properties 设置文件属性$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");$objPHPExcel->getProperties()->setTitle("Office XLSX Test Document");$objPHPExcel->getProperties()->setSubject("Office XLSX Test Document");$objPHPExcel->getProperties()->setDescription("Test document for Office XLSX, generated using PHP classes.");$objPHPExcel->getProperties()->setKeywords("office openxml php");$objPHPExcel->getProperties()->setCategory("Test result file");$row=1;$objPHPExcel->getActiveSheet()->setCellValue(A.$row, ank);$objPHPExcel->getActiveSheet()->setCellValue(B.$row, eam);$objPHPExcel->getActiveSheet()->setCellValue(C.$row, solved);while(!feof($file)){//echo $row." ";$line=fgets($file);if(preg_match("/$rankpatt/",$line,$match)){$row++;//print_r($match);//echo$match[2]." ";//echo"

";$objPHPExcel->getActiveSheet()->setCellValue(A.$row, $match[2]);$objPHPExcel->getActiveSheet()->getStyle(A.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);}if(preg_match("/$namepatt/",$line,$match)){//print_r($match);//echo$match[2]." ".$match[4]." ";//echo"

"; $objPHPExcel->getActiveSheet()->setCellValue(B.$row, $match[2].$match[4]);}if(preg_match("/$problempatt/",$line,$match)){//print_r($match);//echo$match[2]." ";//echo"

";$objPHPExcel->getActiveSheet()->setCellValue(C . $row, $match[2]);$objPHPExcel->getActiveSheet()->getStyle(C.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);}$objWriter = new PHPExcel_Writer_Excel($objPHPExcel);$objWriter->save(str_replace(.php, .xlsx, __FILE__));}echo"well done:)";?>

5.运行结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。