Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:通过URL描述符从HTML获取URL_Php_Html_Dom_Web Scraping - Fatal编程技术网

PHP:通过URL描述符从HTML获取URL

PHP:通过URL描述符从HTML获取URL,php,html,dom,web-scraping,Php,Html,Dom,Web Scraping,在PHP中,如何通过只知道某个href的名称/描述文本来获取其URL?例如,如何通过搜索字符串“sitemap”从Apple主页获取站点地图的URL 因此,在开始时,我只知道我想要爬网的站点(例如www.apple.com)和我感兴趣的URL描述符(例如“站点地图”)。解决方案的正确输出应为: 任何关于如何解决这个问题的想法都将受到高度赞赏。也许可以使用正则表达式 $url='1!'http://www.apple.de'; $name='站点地图'; $content=file\u get\u

在PHP中,如何通过只知道某个href的名称/描述文本来获取其URL?例如,如何通过搜索字符串“sitemap”从Apple主页获取站点地图的URL

因此,在开始时,我只知道我想要爬网的站点(例如www.apple.com)和我感兴趣的URL描述符(例如“站点地图”)。解决方案的正确输出应为:


任何关于如何解决这个问题的想法都将受到高度赞赏。

也许可以使用正则表达式

$url='1!'http://www.apple.de';
$name='站点地图';
$content=file\u get\u contents($url);
如果(preg_match('/]*href\s*=\s*(“([^“]+)”“|\”([^\']+)\”)[^>]*>.'.$name....*/i',$content,$matches))
打印(匹配项);

在对另一个答案作出否定评论后,我不想提出我自己的问题,但这个问题对许多人来说可能不太感兴趣

在HTML中,URL通常如下所示:

<a href="http://www.apple.com/sitemap/" >http://www.apple.com/sitemap/</a>

因此,您需要的是url标记的
href
属性

有很多不同的方法可以做到这一点,这有点学术性,这可能就是为什么很少有人发布答案的原因

要解析页面,DOM解析库是最佳选择。请研究其中一些

一、 就个人而言,我喜欢使用基于XPath的DOM解析库,并且经常使用标准php预先打包的DOMDocument库


.

对html、xml等进行正则表达式解析几乎从来都不是一个好主意。.许多DOM库中的一个是一个非常首选的选择。谢谢,正则表达式完成了这项工作,上面的代码片段的结果如下:
[0]=>[1]=>“/legal/privacy/”[2]=>/legal/privacy/
我稍微更新了正则表达式。它的工作原理类似于sharm:
preg_match(“/谢谢你的回答。我同意HTML中的URL很多时候看起来都像你展示的示例。但是,在这种情况下,我可以肯定URL描述符是静态文本(例如“站点地图”)基于此,您能否详细说明如何使用基于XPath的DOM解析器解决此问题?Html使用标记来标识文本的概念部分。没有“静态文本”的概念"在html中,它将在一个标记内。我没有时间详细回答,但会提供一些链接…祝你好运!好吧,我的意思是我确定我尝试爬网的网页有文本字符串“Site map”作为URL的描述。无论如何,我想我会使用下面的正则表达式,因为它可以工作,而不是尝试不工作o使DOMXPath解决方案正常工作。