我正在寻找解析包含元素的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
正如我所说,可能过于复杂了。什么是最简单(或功能正常)的方法?
答案 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。祝你好运!