如何从a response.body中获取节点中<img src =''>的绝对路径

Bsego

因此,我想使用request-promise来拉动页面的正文。打开页面后,我想收集所有标签并获取这些图像的src数组。假设页面上的src属性同时具有相对路径和绝对路径。我想要页面上的img的绝对路径数组。我知道我可以使用一些字符串操作和npm路径来构建绝对路径,但是我想找到一种更好的方法。

var rp = require('request-promise'),
    cheerio = require('cheerio');

var options = {
    uri: 'http://www.google.com',
    method: 'GET',
    resolveWithFullResponse: true
};

rp(options)
  .then (function (response) {
    $ = cheerio.load(response.body);
    var relativeLinks = $("img");
    relativeLinks.each( function() {
        var link = $(this).attr('src');
        console.log(link);
        if (link.startsWith('http')){
            console.log('abs');
        }
        else {
            console.log('rel');
        }
   });
});

结果

  /logos/doodles/2016/phoebe-snetsingers-85th-birthday-5179281716019200-hp.gif
  rel
尼克·巴特利特(Nick Bartlett)

要获得场景中的图像链接数组,可以使用url.resolve解析带有请求URLsrcimg标记的相对属性,从而得到一个绝对URL。该数组传递到最终的then; 您可以根据需要使用数组执行其他操作console.log

var rp = require('request-promise'),
    cheerio = require('cheerio'),
    url = require('url'),
    base = 'http://www.google.com';

var options = {
    uri: base,
    method: 'GET',
    resolveWithFullResponse: true
};

rp(options)
    .then (function (response) {
        var $ = cheerio.load(response.body);

        return $('img').map(function () {
            return url.resolve(base, $(this).attr('src'));
        }).toArray();
    })
    .then(console.log);

url.resolve将适用于绝对URL或相对URL(从请求URL解析为相对路径时,它将解析并返回组合的绝对URL,但从请求URL解析为绝对URL时,它将仅返回绝对URL)。例如,img在google上具有/logos/cat.gifhttps://test.com/dog.gif作为src属性的标签,这将输出:

[ 
    'http://www.google.com/logos/cat.gif',
    'https://test.com/dog.gif'
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何给出html img src的绝对路径?

来自分类Dev

如何设置img标签在Windows和Linux中工作的绝对路径

来自分类Dev

如何设置img标签在Windows和Linux中工作的绝对路径

来自分类Dev

如何获取文件的绝对路径

来自分类Dev

如何在PowerShell中基于相对路径或绝对路径获取绝对路径?

来自分类Dev

如何在Android中获取视图的绝对路径?

来自分类Dev

如何在Java中获取绝对路径

来自分类Dev

如何从InputStream获取Java文件的绝对路径?

来自分类Dev

如何使用Delphi获取INI文件的绝对路径?

来自分类Dev

Python:如何获取调用函数的文件的绝对路径?

来自分类Dev

如何从android目录URI获取绝对路径

来自分类Dev

拷贝文件时如何获取拷贝的绝对路径?

来自分类Dev

如何在Gruntfile中访问Gruntfile的绝对路径?

来自分类Dev

如何防止动态链接器中的绝对路径

来自分类Dev

如何从Elm中的绝对路径创建URL

来自分类Dev

如何在bash提示中显示绝对路径?

来自分类Dev

如何防止动态链接器中的绝对路径

来自分类Dev

MSBuild:给定绝对路径,如何获取文件的相对路径?

来自分类Dev

如何在Angular JS中使用data-ng-src绑定绝对路径

来自分类Dev

与IMG_RESOURCE的绝对路径

来自分类Dev

如何使用pathlib在Python中获取两个绝对路径之间的相对路径?

来自分类Dev

如何在Elisp中测试路径是否为绝对路径?

来自分类Dev

如何使用Storage Access Framework(SAF)在可移动SD卡中获取绝对路径?

来自分类Dev

如何在Symfony2控制器中获取文件的绝对路径?

来自分类Dev

如何在Symfony2中获取文件的绝对路径?

来自分类Dev

如何获取在git commit中已更改但具有绝对路径的文件的列表?

来自分类Dev

如何在Angular 2中获取当前页面的绝对路径?

来自分类Dev

如何获取存储在SD卡中的文件的绝对路径-Android

来自分类Dev

如何获取在git commit中已更改但具有绝对路径的文件的列表?

Related 相关文章

  1. 1

    如何给出html img src的绝对路径?

  2. 2

    如何设置img标签在Windows和Linux中工作的绝对路径

  3. 3

    如何设置img标签在Windows和Linux中工作的绝对路径

  4. 4

    如何获取文件的绝对路径

  5. 5

    如何在PowerShell中基于相对路径或绝对路径获取绝对路径?

  6. 6

    如何在Android中获取视图的绝对路径?

  7. 7

    如何在Java中获取绝对路径

  8. 8

    如何从InputStream获取Java文件的绝对路径?

  9. 9

    如何使用Delphi获取INI文件的绝对路径?

  10. 10

    Python:如何获取调用函数的文件的绝对路径?

  11. 11

    如何从android目录URI获取绝对路径

  12. 12

    拷贝文件时如何获取拷贝的绝对路径?

  13. 13

    如何在Gruntfile中访问Gruntfile的绝对路径?

  14. 14

    如何防止动态链接器中的绝对路径

  15. 15

    如何从Elm中的绝对路径创建URL

  16. 16

    如何在bash提示中显示绝对路径?

  17. 17

    如何防止动态链接器中的绝对路径

  18. 18

    MSBuild:给定绝对路径,如何获取文件的相对路径?

  19. 19

    如何在Angular JS中使用data-ng-src绑定绝对路径

  20. 20

    与IMG_RESOURCE的绝对路径

  21. 21

    如何使用pathlib在Python中获取两个绝对路径之间的相对路径?

  22. 22

    如何在Elisp中测试路径是否为绝对路径?

  23. 23

    如何使用Storage Access Framework(SAF)在可移动SD卡中获取绝对路径?

  24. 24

    如何在Symfony2控制器中获取文件的绝对路径?

  25. 25

    如何在Symfony2中获取文件的绝对路径?

  26. 26

    如何获取在git commit中已更改但具有绝对路径的文件的列表?

  27. 27

    如何在Angular 2中获取当前页面的绝对路径?

  28. 28

    如何获取存储在SD卡中的文件的绝对路径-Android

  29. 29

    如何获取在git commit中已更改但具有绝对路径的文件的列表?

热门标签

归档