我希望解析包含以下元素的 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
正如我所说,这可能过于复杂化了。最简单(或只是功能性)的方法是什么?
最佳答案
使用正则表达式!
像这样的事情应该可以解决问题:
html.match(/<img [^>]*src="([^"]*)"/g)
请参阅此处的工作示例:http://www.rubular.com/r/f89Y9fHGtN (注意:Ruby 正则表达式与 JS 正则表达式有点不同,但我不知道后者有这么酷的工具。)
<小时/>
正则表达式解释:
<img
– 这与标签的开头匹配。
[^>]*
– 有点棘手。这摆脱了 src
前面的东西参数(例如 alt
参数)。当存在 >
时,此版本会失败参数内的 char ,这可能不应该发生。您可以尝试将此部分替换为 .*
,在这种情况下会起作用,但另一方面,当参数值以 src=
结尾时会失败。 .
src="
– 这找到了 src 参数。
([^"]*)
– 捕获内部的 URL。
"
– 找到值的结尾。
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
关于jquery - 从标签中提取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633039/