选择具有相同className的多个标签?

时间:2017-08-11 20:46:40

标签: javascript node.js web-scraping web-crawler x-ray

使用以下语法:

x('http://www.viadeo.com/fr/company/unicef', 
    '.page-content',
    [{
    img:'img@src',
    bio:'.pan-desc-description',

    org:'.pan-desc-footer-element @element-value',
    link: '.element-value a@href',
    **twitter:'.element-value a@href'** // I get the previous link not the twitter one 

}]).write('result.json')

网站中有多个具有该特定类名的项目,但它只返回第一个。有没有办法抓住他们所有人,也许我可以用这个回报做一个.limit?我很抱歉,如果它在文档中,我已经阅读了两次,看起来它没有在任何地方明确说过。

2 个答案:

答案 0 :(得分:1)

你只需要包装你想要的东西"分裂"括号。

这是适用于我的代码。

// UdpClient client = new UdpClient();
client.EnableBroadcast = true;

我还删除了外部括号,因为页面内容永远不会有多个元素,因此您永远不会想要多个元素。

答案 1 :(得分:1)

您可以利用chrome检查器工具获取正确的选择器

这里,这段代码对我有用,

var Xray = require('x-ray');
var x = Xray();
x('http://www.viadeo.com/fr/company/unicef', 
'.page-content',
 [{
  img:'img@src',
  bio:'.pan-desc-description',
  org:'.pan-desc-footer-element @element-value',
  link: '.element-value a@href',
  twitter:'.mbs:nth-child(4) a@href' // or use div.element-value.gu.gu-last a@href
}]).write('result.json')

在那里,我们得到了这个结果。

[
  {
    "img": "http://static8.viadeo-static.com/fzv6VNzGukb7mt5oV0Nl-wQxCDI=/fit-in/200x200/filters:fill(white)/7766b960b98f4e85affdab7ffa9863c7/1434471183.jpeg",
    "bio": "Le Fonds des Nations unies pour l'enfance (abrégé en UNICEF ou Unicef pour United Nations International Children's Emergency Fund en anglais) est une agence de l'ONU consacrée à l'amélioration et à la promotion de la condition des enfants. Son nom était originellement United Nations International Children's Emergency Fund, dont elle a conservé l'acronyme. Elle a activement participé à la rédaction, la conception et la promotion de la convention relative aux droits de l'enfant (CIDE), adoptée suite au sommet de New York en 1989. Son revenu total en 2006 a été de 2 781 millions Dollar US.\r\n          L'UNICEF a reçu le prix Nobel de la paix en 1965.",
    "link": "http://www.unicef.org/",
    "twitter": "http://www.twitter.com/UNICEF "
  }
]

以下是如何在chrome上获得正确的选择器:

首先右键单击并单击检查。 enter image description here

然后单击复制选择器,并使用它。 enter image description here

当您复制选择器时,它会说出类似的内容,

#pan-desc > div.pan-desc-grey > div > div:nth-child(4) > div.element-value.gu.gu-last > a

您可以直接使用它,也可以对其进行优化。