从标签中提取URL

时间:2013-07-13 18:28:03

标签: jquery node.js cheerio

我正在寻找解析包含元素的HTML请求:

<img src="https://pbs.twimg.com/media/...." alt="Embedded image permalink"</a>

尝试获取img src标记。我想要的只是URL。

此时我可能会过火了。使用Request和Cheerio来尝试完成此任务。

在我试图做的20种不同方式中,这是我当前的代码。

var dummy;
request('http://t.co/....', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    $ = cheerio.load(response.body);
    dummy = $('img[alt=Embedded image permalink]').attr('html');
    console.dir(dummy);
  }
}

我收到错误消息:

selector = selector.substr(data[0].length);
TypeError: Cannot read property '0' of null

正如我所说,可能过于复杂了。什么是最简单(或功能正常)的方法?

2 个答案:

答案 0 :(得分:1)

使用regexp!

这样的事情可以解决问题:

html.match(/<img [^>]*src="([^"]*)"/g)

请参阅此处的工作示例:http://www.rubular.com/r/f89Y9fHGtN(注意:Ruby正则表达式与JS表示略有不同,但我不知道后者有这么酷的工具。)


Regexp解释道:

<img - 这与标记的开头匹配。

[^>]* - 有点棘手。这消除了src参数(例如alt参数)前面的内容。当参数中有>个字符时,此版本会失败,这可能不会发生。您可以尝试使用.*替换此部分,这将在这种情况下有效,另一方面当参数值以src=结尾时失败。

src=" - 这会找到src参数。

([^"]*) - 捕获内部的网址。

" - 找到值的结尾。

  

有些人在面对问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。

答案 1 :(得分:0)

因此,如果我理解正确,您希望立即将url字符串中的src字符串后面的 var arrayOfElements = $("#txt").val().split("src="); var replacing = arrayOfElements[1].replace(/"/g, "'"); var url = replacing.split("'"); //You can now access the element by using url[1] 减去?

为什么不将所有文本放在变量中然后双重拆分?

例如:

{{1}}

您可以看到一个有效的例子HERE。祝你好运!