目录
网页抓取信息(php正则表达式、php操作excel)
首页 后端开发 php教程 网页抓取信息(php正则表达式、php操作excel)_PHP教程

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

Jul 13, 2016 am 09:51 AM
正则 网页 表达式

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

1.问题描述

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

 

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.代码

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

<!--?php

header("Content-Type: text/html; charset=utf-8");

 

$url = "http://acm.wust.edu.cn/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);

// <td-->1team30_姓名

$namepatt="()(\*{0,1}team[0-9]+)(_)([$patt_ch]+)(<\/a>)"// part2 part4

//$namepatt="(team[0-9]+)(_)([$patt_ch]+)";   也可以用这个直接匹配"team_姓名"

//7

$problempatt="()([0-9]+)(<\/a>)";

 

 

//Include class

require_once(&#39;Classes/PHPExcel.php&#39;);

require_once(&#39;Classes/PHPExcel/Writer/Excel2007.php&#39;);

$objPHPExcel = new PHPExcel();

 

//Set properties 设置文件属性

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");

$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");

$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");

$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");

$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");

$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");

$objPHPExcel->getProperties()->setCategory("Test result file");

 

 

$row=1;

$objPHPExcel->getActiveSheet()->setCellValue(&#39;A&#39;.$row, &#39;rank&#39;);

$objPHPExcel->getActiveSheet()->setCellValue(&#39;B&#39;.$row, &#39;team&#39;);

$objPHPExcel->getActiveSheet()->setCellValue(&#39;C&#39;.$row, &#39;solved&#39;);

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(&#39;A&#39;.$row, $match[2]);

        $objPHPExcel->getActiveSheet()->getStyle(&#39;A&#39;.$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(&#39;B&#39;.$row, $match[2].$match[4]);

    }

    if(preg_match("/$problempatt/",$line,$match))

    {

        //print_r   ($match);

        //echo  $match[2]." ";

        //echo  "

";

        $objPHPExcel->getActiveSheet()->setCellValue(&#39;C&#39; . $row, $match[2]);

        $objPHPExcel->getActiveSheet()->getStyle(&#39;C&#39;.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);

    }

    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

    $objWriter->save(str_replace(&#39;.php&#39;, &#39;.xlsx&#39;, __FILE__));

}

echo    "well done:)";

?></a[[:space:]]></a[[:space:]]>

登录后复制


5.运行结果

\

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1015087.htmlTechArticle网页抓取信息(php正则表达式、php操作excel) 1.问题描述 实现对固定网页上自己需要的信息抓取,以表格形式存储。我是拿wustoj上的一个排...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Edge浏览器怎么将网页用快捷方式发送到桌面? Edge浏览器怎么将网页用快捷方式发送到桌面? Mar 14, 2024 pm 05:22 PM

Edge浏览器怎么将网页用快捷方式发送到桌面?

使用JavaScript开发网页投票系统 使用JavaScript开发网页投票系统 Aug 09, 2023 pm 01:30 PM

使用JavaScript开发网页投票系统

网页无法访问怎么办 网页无法访问怎么办 Sep 06, 2023 am 09:36 AM

网页无法访问怎么办

网络连接正常但浏览器无法访问网页可能原因 网络连接正常但浏览器无法访问网页可能原因 Feb 19, 2024 pm 03:45 PM

网络连接正常但浏览器无法访问网页可能原因

网页自动刷新设置方法 网页自动刷新设置方法 Oct 26, 2023 am 10:52 AM

网页自动刷新设置方法

网页打不开怎么解决 网页打不开怎么解决 Feb 21, 2024 am 10:24 AM

网页打不开怎么解决

网页图片加载不出来怎么办?6种解决办法 网页图片加载不出来怎么办?6种解决办法 Mar 15, 2024 am 10:30 AM

网页图片加载不出来怎么办?6种解决办法

php怎么在网页打开 php怎么在网页打开 Mar 22, 2024 pm 03:20 PM

php怎么在网页打开

See all articles