如何使用Cheerio获取style=background img URL



我正在尝试获取背景图像的URL。背景图像位于a href标记中。

a href标签,style="background-img:url("")"

我使用的是cheerio(node.js模块类似于Jquery(。当我试图它给了我错误,

类型错误:无法读取属性"替换";对于未定义的

我的代码是:

$("div.listing.listing-blog.listing-blog-1.clearfix.columns-1.columns-1 > article > .item-inner  .featured.clearfix  a").map(function () {
let imgURL = $(this).css("background-image");
imgURL = imgURL.replace(/.*s?url(['"]?/, '').replace(/['"]?).*/, '');
return { imgURL };
}).get();

这就是需要背景图像URL的元素:

<article class="post-431236 type-post format-standard has-post-thumbnail   listing-item listing-item-blog  listing-item-blog-1 main-term-51 bsw-5 ">
<div class="item-inner clearfix">
<h2 class="title"> <a href="https://arynews.tv/en/nab-money-laundering-reference-shehbaz-sharif/" class="post-url post-title">
POST TITLE </a>
</h2>
<div class="featured clearfix">
<a alt="nab, shehbaz sharif, pml-n, benami assets" title="NAB prepares money-laundering reference against Shehbaz Sharif: sources" data-bs-srcset="{&quot;baseurl&quot;:&quot;https://arynews.tv/wp-content/uploads/2020/09/&quot;,&quot;sizes&quot;:{&quot;210&quot;:&quot;shehbaz-1-1-210x136.jpg&quot;,&quot;279&quot;:&quot;shehbaz-1-1-279x220.jpg&quot;,&quot;357&quot;:&quot;shehbaz-1-1-357x210.jpg&quot;,&quot;750&quot;:&quot;shehbaz-1-1.jpg&quot;}}" class="img-holder    b-loaded" href="https://arynews.tv/en/nab-money-laundering-reference-shehbaz-sharif/" style="background-image: url(&quot;https://arynews.tv/wp-content/uploads/2020/09/shehbaz-1-1-279x220.jpg&quot;);"></a>
</div>

cheerio没有这些方法,您需要使用attr((:

// untested, I have no idea what your element looks like
$(a).attr('style').match(/url("(.*?)"/)[1]

使用不带jQuery的纯js,可以键入:

const selector = `div.listing.listing-blog.listing-blog-1.clearfix.columns-1.columns-1 > article > .item-inner  .featured.clearfix  a`;
const imgURL = document.querySelector(selector).style.background

您将收到类似的字符串

"url("http://localhost:1337/uploads/offline_reset_45146034ad.jpg") center center no-repeat"

下一步是通过regex从这个字符串中获取URL。

还有你的例子:

imgURL.replace(/.*s?url(['"]?/, '').replace(/['"]?).*/, '')

给效果很好

"http://localhost:1337/uploads/offline_reset_45146034ad.jpg"

最新更新