如何让内容(数据)从另一个网站用PHP
2008年3月28日7评论
采取的内容,另一个网站的任务,不得不做。 我认为这将是容易的,但事情出来,正是我的计划…所幸的是,成功! 学习,你们也和搜集资料,从其他网站在互联网上。
任务:得到的内容网站
今天,在工作中,有任务, “拉”了一些数据,从一个网站 ,以“嫁接”在一个摘自一个网站 ,我来帮助发展。 当我最后一次任务,尽快记住的时候,朋友没有同样的事情(和,在时间,他解释说,我更多或更少,但这) 。 我认为这将很容易完成的任务,但在时间, “提醒”我不是不如gevã … rsrs
解决办法:本土的职能, PHP和正则表达式
我花了研究在互联网上,拼命寻找的参考材料对正则表达式 (其中,你会看到,是支柱之一,为实现得到一些内容从其他网站) 。 从这里,寻找有聊天与gevã轧上我尝试更好地理解这种定期的表达。 之前,使用有点“ gambiarra ” ,设法实现我的目标。
要做的第一件事就是拿起的整个内容的网页您想要“操纵” 。 为此用途,举例来说, 功能file_get_contents ( ) 。 扮演的网站内容在一个变量,以及将( ' ,使当地雇员一个例子,与在同一地点曾动议) :
1 | 元网址 = file_get_contents ( ' http://www.bcb.gov.br/ ' ) ; |
准备就绪,现在包含变元的URL , 字符串,整个内容的网页,该土著联昌银行。
正则表达式
因此,在这里是很容易,困难的追赶只是部分的网页,我想… …为这,您必须使用正则表达式!
如果您不知道什么是正则表达式,有奥钢联简短的(和不完整的… … ) 的解释,什么是正则表达式,从文字:
正则表达式在信息技术方面,定义了一个标准被用来寻求或以文字或群体的话。 这是一个必须作出搜查的某些部分的文字。
与正则表达式是可以找出片段的话或群体的话,比赛( “匹配” ) ,以一定的标准( “模式” ) ,这是“经常” 。
PHP的有几个本土的职能工作与经常性的用语。 刚才知道,每一个服务和使用meneira正确的。
那么,下一步对解决问题是要找出模式,您要提取的网站。 在情况下,我需要一个表与一些外国汇率(是正确的,该网站的土著联昌银行) 。 注意到源代码,我看到的资料是在一个表中(在语义上正确的做法! ) ;此外,此表是包围之间的HTML评论“ < ! --家居指标-- >” “和” < ! - - f i mi nd icadores- -> “ ” 。 这是一件好事,因为它方便,而不是“确定的模式” 。
更好地解释:模式所要求的情况下,是所有这一切都是之间的HTML评论“ < ! --家居指标-- >” “和” < ! - - f i mi nd icadores-->“”。 整个表是有,我的幸福! :-)
那么,这样做我们需要做的是使用一个PHP函数(情况下,选择了preg_match_all ( ) ) ,以寻求一个正则表达式内部的变元的URL ,其中包含整个第一页的网站是该表。
后多少时间测试vááárias正则表达式,我得出的结论是这将使一小mutreta 。 但首先,请允许我表明,如何守则是,直至现在。
1月2日 | 元网址 = file_get_contents ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /矿石-> (. )<!--/s ' ,元 网址元 , 内 容) ; |
解释:第一个参数的功能,是标准的,我寻求;第二,是我会尝试和第三,民警卫队在一个数组所有发生的话报批。 大多数情况下,它可能已被好,在这里,但我已没有问题,仍然需要数更多的代码行。
目前,可变元,内容包含一个数组的发生与发现。 使用print_r ( ) ,发现在其中的地位,正是我一直在寻找: $内容[ 0 ] [ 0 ] 。
作出了“ mutreta ”
使这个“ mutreta ” ,游戏的内容矩阵的立场,到另一个变量(以方便处理) 。
1 2 3 | 元网址 = file_get_contents ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /矿石-> (. )<!--/s ' ,元 网址元 , 内 容) ;元 ,显示 = $内容 [ 0 ] [ 0 ] ; |
有摘录我是归侨(即表与外汇汇率)表示,我不想出现在网站 (如某些链接) 。 因此,我决定撤回他们的功能str_replace ( ) ,取代部分的弦乐团。 那是可能的,作为一个论据,通过一个数组。 因此,为现在和接近尾声,代码是这样的:
1 2 3 4 5 | 元网址 = file_get_contents ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /矿石-> (. )<!--/s ' ,元 网址元 , 内 容) ;元 ,显示 = $内容 [ 0 ] [ 0 ] ; 撤回元 = 阵列 ( '多数货币' , ' copom 分钟' , '多' , '矿石->','<!--'); 元,显示 = str_replace ( 美元撤回, '' , 显示美元) ; |
在其他换言之,如果一些项目出现在阵列 元,撤回元,显示,将取代“ , ” (没有什么… … ) 。 请注意,最后两个数组元素是“污染”不必要的,开始是由于我的懒惰,使经常表达的更详细。 :-)
最后…
之后,刚刚曼达文显示在屏幕上“ sobrou ”割喉内容的网页, 网站的土著联昌银行。
一二三四五六 | 元网址 = file_get_contents ( ' http://www.bcb.gov.br/ ' ) ; preg_match_all ( ' /矿石-> (. )<!--/s ' ,元 网址元 , 内 容) ;元 ,显示 = $内容 [ 0 ] [ 0 ] < /跨度> ; 撤回元 = 阵列 ( '多数货币' , ' copom 分钟' , '多' , '矿石->','<!--') 元显示 = str_replace ( $ 撤回, '' , 显示美元) ; 回声 元,显示; |
如果服务器不容许的功能file_get_contents ( ) ?
有很多的服务器,由于种种原因(主要是“安全” ) ,不容许使用此函数file_get_contents ( ) 。 在这些情况下,是有可能的地方,一个变量的任何外部网页使用以下代码(后您的需求的解释,在官方手册的PHP ) :
一二三四五六七 | 美元的CH = curl_init ( ) ; 元超时 = 0 ; curl_setopt (元 社区会堂, curlopt_url , ' o_site_que_voce_quer ' ) ; curl_setopt (元 社区会堂, curlopt_returntransfer , 1 ) ; curl_setopt (元 社区会堂, curlopt_connecttimeout 元 , 超时) ;元内容 = curl_exec ( 美元的CH ) ; curl_close (美元的CH ) ; |
然后,网页的内容“ o_site_que_voce_quer ”将在变元的内容。
结论
然后,工作人员,撤回部分内容的一个网站 (使用PHP ) ,步骤是:
- 了解哪些网页是内容是准确的;
- 发挥网站内容在一个变量;
- 提取的话你想使用正则表达式;
- 如有需要,削减了一些东西,更多的结果,雌激素;
- 显示屏幕在最后的结果。
大跃进的猫在这种情况下,是否处理正则表达式;的事,我可否告知,但你了解这样做! 和做多少! 阅读参考在本月底的文章,找到更多的物质在互联网上它。
另一件重要的事是:请记住,在你正在采取的内容网站 ,如果改变其结构,最有可能将要改变的正则表达式,太。
知道了一件事:如果您, 网站开发,尚未指定使用正则表达式,你可以放心,其小时来到奥钢联!














优秀的, sr.tárcio ! 你有一个柠檬,并提出了柠檬水。 文章非常好,恭喜!
谢谢您的gevã !
50 %是您的信用卡! =
abraços !
请记住,与使用的XHTML页面在结构,这是不必要的,因为数据的提取可以作出完全相同的方式提取数据从一个XML 。
@拉斐尔爱德华多kassner
您好,拉斐尔,确定呢?
非常有趣的是,你所提到的! 它可以树立一个榜样,让我们可以学习?
abraços !
感谢手!
人谁不想探究,奥钢联有很大的连结,呃:
http://guia-er.sourceforge.net/
对我来说这是非常有用的!
@朱丽亚努
谢谢提醒网站的奥里利乌斯。 更好,甚至购买此书是参考他提出的,但对于在线咨询,这是非常好的!
感谢您访问!
Trackback跟踪对2008年8月26日