问题描述
我正在尝试从Google新闻中解析结果。例如,从“最新电影发行”搜索中解析标题和文本,这是URL:
结果似乎在ID中使用#rso:
但是$('#rso').each
上的迭代器为空。我应该选择哪个id或css元素来遍历搜索结果的div?
迭代器代码:
$('#rso').each(function (i,element) {
console('div level 1')
var title = $(this).find('.r').text();
var link = $(this).find('.r').find('a').attr('href').replace('/url?q=','').split('&')[0];
var text = $(this).find('.st').text();
var img = $(this).find('img.th').attr('src');
savedData.push({
title: title,link: link,text: text,img: img
});
});
解决方法
尝试一下:
$('#rso > div').each(...
,
您应该改用$$
$$('#rso > div')
参考
Console Utilities API Reference
,$(选择器)是document.querySelector()的别名
$$(selector)是document.querySelectorAll()的别名
你能试试这个吗?
let data = {};
document.querySelectorAll("#rso").forEach(elem => {
let hrefs = [];
let imgs = [];
elem.querySelectorAll("a").forEach(aElem => {
hrefs.push({href: aElem.getAttribute("href")});
});
elem.querySelectorAll("img").forEach(iElem => {
imgs.push({src: iElem.getAttribute("src")});
});
data.links = hrefs;
data.images = imgs;
})
请注意,每张卡都有两个图像,一个是缩略图上的左侧图标,另一个是实际图像。 因此图片列表的长度将为链接列表的2 *长度。