博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZH奶酪:PHP抓取网页方法总结
阅读量:5965 次
发布时间:2019-06-19

本文共 1501 字,大约阅读时间需要 5 分钟。

From:
在做一些天气预报或者RSS订阅的程序时,往往需要抓取非本地文件,一般情况下都是利用php模拟浏览器的访问,通过http请求访问url地址,然后得到html源代码或者xml数据。
 

得到数据我们不能直接输出,往往需要对内容进行提取,然后再进行格式化,以更加友好的方式显现出来。

下面先简单说一下本文的主要内容:
一、 PHP抓取页面的主要方法:

1. file()函数

2. file_get_contents()函数
3. fopen()->fread()->fclose()模式   fopen链接:
4.curl方式
5. fsockopen()函数 socket模式
6. 使用插件(如:http://sourceforge.net/projects/snoopy/)

二、PHP解析html或xml代码主要方式:

1. 正则表达式
2. PHP DOMDocument对象
3. 插件(如:PHP Simple HTML DOM Parser)

PHP抓取页面

1. file()函数

2. file_get_contents()函数

使用file_get_contents和fopen必须空间开启 allow_url_fopen

方法:编辑php.ini,设置 allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。

3. fopen()->fread()->fclose()模式

4. curl方式

使用curl必须空间开启curl

方法:

windows下修改php.ini,将 extension=php_curl.dll前面的分号去掉,而且需要拷贝ssleay32.dll和libeay32.dll到C:\WINDOWS \system32下;

Linux下要安装curl扩展。

5. fsockopen()函数 socket模式

socket模式能否正确执行,也跟服务器的设置有关系,具体可以通过phpinfo查看服务器开启了哪些通信协议,比如我的本地php socket没开启http,只能使用udp测试一下了。

\n";} else {fwrite($fp, "\n");echo fread($fp, 26);fclose($fp);}?>

6. 插件

网上应该有比较多的插件,snoopy插件是在网上搜到的,有兴趣的可以研究一下。

PHP解析xml(html)

1. 正则表达式:

(.*)',$lines_string,$title);echo htmlspecialchars($title[0]);?>

2. PHP DOMDocument()对象

如果远程的html或xml存在语法错误,php在解析dom的时候会报错。(关于loadHTMLFile的问题,在我整理的前几篇blog中有提到.)

loadHTMLFile($url);$title=$html->getElementsByTagName('title');echo $title->item(0)->nodeValue;?>

3. 插件

本文以PHP Simple HTML DOM Parser为例,进行简单介绍,simple_html_dom的语法类似jQuery,它让php操作dom,就像使用jQuery操作dom一样的简单。

find('title');echo $title[0]->plaintext;?>

 

转载地址:http://alvax.baihongyu.com/

你可能感兴趣的文章
浏览器跨域问题
查看>>
部署WEB项目到服务器(二)安装tomcat到linux服务器(Ubuntu)详解
查看>>
SpringBoot之SpringBoot+Mybatis+Mysql+Maven整合
查看>>
SQLServer BI 学习笔记
查看>>
20160504-hibernate入门
查看>>
工作四周年
查看>>
sql定时自动备份(定时作业)
查看>>
Excel 2013 表格自用技巧
查看>>
ubuntu安装VNC、Xfce桌面
查看>>
浅析支付系统的整体架构
查看>>
二位数组
查看>>
unix文件权限
查看>>
Python 模拟鼠键
查看>>
2017-2018-2 20155224『网络对抗技术』Exp7:网络欺诈防范
查看>>
tomcat 搭建
查看>>
Source Code Review
查看>>
分享一下我安装启动Jmeter出错时的解决办法
查看>>
java 调用process
查看>>
用a标签实现submit提交按钮的效果
查看>>
第十周
查看>>