解析HTML字符串中所有URL的最佳方法是什么?

时间:2011-09-20 02:25:37

标签: javascript regex node.js

我正在Node中编写一个网络爬虫,以便在接下来的几周内获得乐趣。在我的原型中,我使用jsdom来jquerify页面,然后搜索所有锚点并将href添加到我的爬行列表中。我意识到如果我只是从源代码中解析出任何URL(例如,文本中的URL),我可能会找到更多的URL。我想知道是否有任何好的JavaScript库使用正则表达式或其他方式来做这件事。

作为旁注:这是个坏主意吗?

更新

虽然我最初选择了克里斯的答案,但我有点高兴,因为事实证明。不幸的是我最终没有使用node.io.我发现它有点臃肿,并没有真正关注我试图做的事情。目前我正在使用soupselect + htmlparser来获取页面上任何锚点的href值,我对此解决方案暂时感到满意。

2 个答案:

答案 0 :(得分:2)

查看node.io,这是node.js的优秀抓取和处理框架。

或者,也可以使用YUI3从节点解析和操作HTML文档。

答案 1 :(得分:1)

在查找网址时,我使用此正则表达式:/(https?:\/\/)([^.\/]+(?:\.[^.\/]+)+)(\/.*)/

然后你有子模式:

  1. 协议
  2. 路径
  3. 不确定它对爬虫的效果如何,但它从来没有让我失望过。