我看过这个问题,非常好,内容丰富。但是,它没有处理相当常见的情况。
假设我需要抓取大量网站(甚至是同一域中的页面),但该网站的作者对他的代码不够关心,并且有一些严重格式错误的代码“有点用”。我需要从那个网站获取信息。
在这种情况下我该怎么做?理想情况下不去 í͞ń̡͢͡s̶̢̛á̢̕͘ń̵͢҉e̶̸̢̛。
是否可以?我必须恢复到 RegExp 吗?
你需要一个 DOM 解析器。PHP 有一个. 然后有一些 替代 品(还有更多......只是谷歌他们)。如果需要,您甚至可以运行“乱码 HTML”trhu HTML Purifier。
我不知道您是如何抓取网站的,但使用 RegExp 将允许您向废品代码添加许多条件。这可能需要一些时间,具体取决于足迹的数量和您的 RegExp 技能。
您也可以在站点 HTML 上使用 Tidy,但这也会导致奇怪的结果以及 IMO。
它必须是PHP吗?Python 有一个很棒的库,叫做Beautiful Soup(“你没有写那个糟糕的页面。你只是想从中获取一些数据”)。根据我的经验,我非常推荐它,如果你有选择的话,我会说,写一个快速的 Python 脚本来将你的节点解析成一个你的 PHP 可以拾取的干净文件。
(知道 PHP 在标题中,这并不能直接回答您的问题。抱歉,如果您没有选择(或不喜欢)Python,只是想提供一个不错的选择。)