从标签中提取URL
我正在寻找parsing通过包含元素的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
正如我所说的,可能过于复杂。 什么是最简单的(或只是function)的方式来做到这一点?
使用正则expression式!
像这样的事情应该做的伎俩:
html.match(/<img [^>]*src="([^"]*)"/g)
看到这里的工作示例: http ://www.rubular.com/r/f89Y9fHGtN(小心:Ruby正则expression式有点不同于JS的,但我不知道这样一个很酷的工具)。
Regexp解释说:
<img
– 符合标签的开头。
[^>]*
– 有点棘手。 这摆脱了src
参数前面的东西(例如, alt
参数)。 这个版本在一个参数里面有一个>
char的时候会失败,这可能不会发生。 你可以尝试用.*
replace这个部分,在这种情况下工作,另一方面,当参数值以src=
结尾时失败。
src="
– 这find了src参数。
([^"]*)
– 捕获里面的URL。
"
– find值的结尾。
有些人在遇到问题时,会想:“我知道,我会用正则expression式”。 现在他们有两个问题。
所以,如果我理解正确的话,你想立即减去string中的src
string中的string?
你为什么不把所有的文本放在一个variables中,然后把它分开?
例如:
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]
你可以在这里看到一个工作的例子。 祝你好运!