gpt4 book ai didi

php - 如何抓取包含无效 HTML 的网站

转载 作者:行者123 更新时间:2023-12-03 22:56:24 24 4
gpt4 key购买 nike

我正在尝试从包含无效 HTML 的网站中抓取数据。 Simple HTML DOM Parser解析它,但由于它处理无效 HTML 的方式而丢失了一些信息。带有 DOMXPath 的内置 DOM 解析器不起作用,它返回空白结果集。通过 PHP Tidy 运行获取的 HTML 后,我能够让它(DOMDocument 和 DOMXPath)在本地工作,但 PHP Tidy 没有安装在服务器上,它是一个共享托管服务器,所以我无法控制它。我试过HTMLPurifier但这似乎只是为了保护用户输入,因为它完全删除了 doctype、head 和 body 标签。

有 PHP Tidy 的独立替代品吗?我真的更喜欢使用 DOMXPath 来导航并获取我需要的内容,它似乎只是需要一些帮助来清理 HTML,然后才能解析它。

编辑:我正在抓取这个网站:http://courseschedules.njit.edu/index.aspx?semester=2010f 。现在我只是想获取所有类(class)链接。

最佳答案

如果您使用 loadHTMLloadHTMLFile,DOM 可以很好地处理损坏的 HTML:

$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile('http://courseschedules.njit.edu/index.aspx?semester=2010f');
libxml_clear_errors();

$xPath = new DOMXPath($dom);
$links = $xPath->query('//div[@class="courseList_section"]//a');
foreach($links as $link) {
printf("%s (%s)\n", $link->nodeValue, $link->getAttribute('href'));
}

将输出

ACCT - Accounting (index.aspx?semester=2010f&subjectID=ACCT)
AD - Art and Design (index.aspx?semester=2010f&subjectID=AD )
ARCH - Architecture (index.aspx?semester=2010f&subjectID=ARCH)
... many more ...
TRAN - Transportation Engr (index.aspx?semester=2010f&subjectID=TRAN)
TUTR - Tutoring (index.aspx?semester=2010f&subjectID=TUTR)
URB - Urban Systems (index.aspx?semester=2010f&subjectID=URB )

使用

echo $dom->saveXML($link), PHP_EOL;

foreach 循环中将输出链接的完整 outerHTML

关于php - 如何抓取包含无效 HTML 的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3893375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com