如何解析HTML/XML并从中提取信息?
我需要匹配所有这些开始标记:
<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)
但不是这些:
<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)
我想出了这个,并希望确保我做对了.我只抓住了a-z.
<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)
我相信它说:
/,然后我有这个权利吗?更重要的是,你怎么看?
试图在页面上找到链接.
我的正则表达式是:
/<a\s[^>]*href=(\"\'??)([^\"\' >]*?)[^>]*>(.*)<\/a>/
Run Code Online (Sandbox Code Playgroud)
但似乎失败了
<a title="this" href="that">what?</a>
Run Code Online (Sandbox Code Playgroud)
我如何更改我的正则表达式来处理未首先放在标签中的href?
我想抓取整个网站,我已经阅读了几个线程,但我无法在第二级获取数据.
也就是说,我可以从起始页面返回链接,但后来我找不到解析链接并获取每个链接内容的方法......
我使用的代码是:
<?php
// SELECT STARTING PAGE
$url = 'http://mydomain.com/';
$html= file_get_contents($url);
// GET ALL THE LINKS OF EACH PAGE
// create a dom object
$dom = new DOMDocument();
@$dom->loadHTML($html);
// run xpath for the dom
$xPath = new DOMXPath($dom);
// get links from starting page
$elements = $xPath->query("//a/@href");
foreach ($elements as $e) {
echo $e->nodeValue. "<br />";
}
// Parse each page using the extracted links?
?>
Run Code Online (Sandbox Code Playgroud)
有人可以通过一个例子来帮我解决最后一部分吗?
我将非常感激!
那么,谢谢你的答案!我尝试了一些东西,但我还没有得到任何结果 - 我是编程的新手..
下面,您可以找到我的两个尝试 - 第一个尝试解析链接,第二个尝试用Curl替换file_get内容:
1)
<?php
// …Run Code Online (Sandbox Code Playgroud) 我正在谈论进行大约5分钟以上的深度递归,这可能是你可能有一个爬虫表演的东西.为了提取网页的url链接和子url链接
似乎PHP中的深度递归似乎并不现实
例如
getInfo("www.example.com");
function getInfo($link){
$content = file_get_content($link)
if($con = $content->find('.subCategories',0)){
echo "go deeper<br>";
getInfo($con->find('a',0)->href);
}
else{
echo "reached deepest<br>";
}
}
Run Code Online (Sandbox Code Playgroud) 我即将创建一个非常大的项目.
如何创建具有以下功能的搜索引擎: -
如果可能的话,请:我如何构建我的数据库?
php ×5
html ×2
web-crawler ×2
dom ×1
html-parsing ×1
hyperlink ×1
parsing ×1
recursion ×1
regex ×1
xhtml ×1
xml ×1
xml-parsing ×1
xpath ×1