解析Google新闻中的值

问题描述

我正在尝试从Google新闻中解析结果。例如,从“最新电影发行”搜索中解析标题和文本,这是URL:

https://www.google.com/search?client=firefox-b-d&tbm=nws&sxsrf=ALeKk01qAUzdE7UzK9aWPL9MYALHEk6aiQ%3A1599313588168&ei=tJZTX6vwCdWr1fAP6eGiyAk&q=latest+movie+releases&oq=latest+movie+releases&gs_l=psy-ab.3...299098.305542.0.305681.31.25.3.2.2.0.161.1719.22j3.25.0....0...1c.1.64.psy-ab..1.13.704...0j33i10k1.0.9TgaNbbee40

结果似乎在ID中使用#rso:

enter image description here

但是$('#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')

enter image description here

参考

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 *长度。