jquery - 从标签中提取 URL

标签 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

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

最佳答案

使用正则表达式!

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

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/

相关文章:

javascript - cheeriojs 迭代 xml 响应

javascript - 使用 NodeJS 进行抓取

javascript - 根据 JavaScript 中的键值查找和删除数组中的对象

javascript - 使用 jQuery 获取内部样式属性

javascript - Pebble 如何监视沙箱用户 javascript/expose api?

node.js - 平均堆栈中的 session 处理

node.js - 有没有办法等待 puppeteer 中 page.click() 之后添加动态内容

jquery - 如何更改 jQuery 中 select2 中的 2 个选择框之间的选定选项元素?

Javascript Tic Tac Toe - 获胜功能不调用/工作

node.js - 为什么这个 Promise 的 then 回调从未被调用?