【技术宅5】抓去网页数据的3种方法

抓去网页数据无非就两步:1、抓取;2:分析

抓取分几种情况:1、普通字符串,就是普通网页源码,用file_get_contents或curl抓取,2、有序数据如xml,可以用simplexml_load_file抓取

分析:如果是第二种情况,就按照xml数据来遍历处理好了。 如果是第一种情况,用preg_match来匹配目标数据

1.使用file_get_contents 

$url = "http://www.34ways.com";

$contents = file_get_contents($url);

//如果出现中文乱码使用下面代码

//$getcontent = iconv("gb2312", "utf-8",$contents);

echo $contents;

2.使用curl    

//初始化一个cURL对象

$ch = curl_init();

//设置抓取的URL

$url = "http://www.34ways.com";

curl_setopt($ch, CURLOPT_URL, $url);

//设置header

curl_setopt($ch,CURLOPT_HEADER,1);

//设置参数,要求结果保存到字符串中还是输出到屏幕上

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//设置参数

$timeout = 5;

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

//在需要用户检测的网页里需要增加下面两行

//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);

//允许curl,请求网页

$contents = curl_exec($ch);

//关闭请求

curl_close($ch);

//输出数据

echo $contents;

3.使用fopen->fread->fclose 

$handle = fopen ("http://www.34ways.com", "rb");

$contents = "";

do {

$data = fread($handle, 1024);

if (strlen($data) == 0) {

  break;

}

$contents .= $data;

} while(true);

fclose ($handle);

echo $contents;

最后提醒几点:

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

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

  2.使用curl必须空间开启curl。

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

时间: 2024-10-25 08:02:52

【技术宅5】抓去网页数据的3种方法的相关文章

python抓取网页数据的三种方法

一.正则表达式提取网页内容 解析效率:正则表达式>lxml>beautifulsoup 代码: import  re import  urllib2 urllist  = 'http://example.webscraping.com/places/default/view/United-Kingdom-239' html =  urllib2.urlopen(urllist).read() num =  re.findall('<td class="w2p_fw"&

Node.JS的表单提交及OnceIO中接受GET/POST数据的三种方法

OnceIO 是 OnceDoc 企业私有内容(文档)管理系统的底层Web框架,它可以实现模板文件.静态文件的全缓存,运行起来完全不需要I/O操作,并且支持客户端缓存优化,GZIP压缩等(只压缩一次),拥有非常好的性能,为您节约服务器成本.它的模块化功能,可以让你的Web进行分布式存储,在一个扩展包里即可包含前端.后端和数据库定义,只需通过添加/删除目录的方式就可实现功能删减,实现真正的模块化扩展.目前 OnceIO 已经开源,本文主要介绍node.js语言中的表单提交及OnceIO中接受GET

优化网页速度的7种方法

为什么网站优化要把网页静态化? SEO优化过程中,把动态网页转化为静态页面是许多SEO优化人员常常做的事情,面对这种SEO优化操作的行为很多人可能有疑问,那就是为什么网站优化要把网页静态化?下面就给大家详细的介绍一下关于网页静态化的一些问题. 什么是动态页面?什么是静态页面? 动态网页:是以.asp..jsp..php..perl..cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”.动态页面是以ASP.PHP.JSP.Perl.或CGI等编程语言制作的,用上面两个指标基本上可

python3 抓取网页资源的 N 种方法

python3 抓取网页资源的 N 种方法 1.最简单  urllib.request response = urllib.request.urlopen() html = response.read() 2.使用 Request  urllib.request   req = urllib.request.Request() response = urllib.request.urlopen(req) the_page = response.read() 3.发送数据    urllib.pa

asp.net(c#)网页跳转七种方法小结

1.response.redirect  这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次 postback),但他可以跳 转到任何页面,没 有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护.但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个 http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端.需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到session. 实例 : using System; using Syst

SQL Server 批量插入数据的两种方法

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters). 运行下面的脚本,建立测试数据库和表值参数. [c-sharp] view plaincopy --Create DataBase create database BulkTestDB; go use BulkTes

5.MVC框架开发(强类型开发,控制器向界面传递数据的几种方法)

界面表单中的表单元素名字和数据库表的字段名相一一映射(需要哪个表的数据就是那个表的模型(Model)) 在View页面中可以指定页面从属于哪个模型 注:以上的关系可以通过MVC的强类型视图开发来解决我们的开发代码的智能感知 1.强类型视图开发的步骤 1)在页面中指定强类型的类型(一定是引用类型),代码:例: @model List<MyMVCBookShop.Models.Book> 2)从控制器传强类型的数据到View视图里,那么就必须保证传入的数据一定和强类型视图中定义的类型相一致,例:

MySQL中删除数据的两种方法

转自:http://blog.csdn.net/apache6/article/details/2778878 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句. DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNCATE TABLE将删除表中的所有记录.因此,DELETE语句更灵活. 如果要清空表中的所有记录,可以使用下面的两种方法: DELETE FROM table1 TRUNCATE TABLE table1 其

DataGridView显示数据的两种方法

1.简单介绍 DataGridView空间是我们常用的显示数据的控件,它有极高的可配置性和可扩展性. 2.显示数据 DataGridView显示数据一般我们常用的有两种方法,一种是直接设置DataSoure属性就可以绑定数据.此方法不需要写任何代码操作比较简单,但是它显示出来的是整张表的数据.如果整一表数据比较多,而且我们并不需要所有的数据的情况下,我们就应该考虑第二种方法了.通过写代码连接数据库并从数据库中读取数据,最后将返回的数据传给DataGridView.这种方法貌似比较复杂,但是它只显