【问题标题】:Find only links that are followed by outcomes仅查找结果后面的链接
【发布时间】:2018-01-01 05:44:26
【问题描述】:

参考this page,我正在尝试获取所有n Markets > 链接,但只有那些后面是赔率的链接。您可能需要滚动几页才能看到网站上的示例,或者下面发布了屏幕截图。

从屏幕截图中,我想要的链接(绿色圆圈)后面是赔率(红色圆圈)。我不希望链接(标有红色 X)后面没有赔率(黄色圆圈)。

是否可以根据.bettype:nth-child(1) .bet-party 旁边是否存在来获取所有.purple-arrow 元素?

应该是足够简单的跟随和前置但这是不想要的。

//*[contains(@href,'/sports-betting/soccer/')]/ancestor::*[contains(@class,'bet-party')]/preceding-sibling::span['other-matches']//*[contains(@href, '/sports-betting/soccer/')]

【问题讨论】:

  • 很难理解你想要做什么。请用文字解释你想用代码做什么。你是想只抓取显示赔率的比赛吗?您还需要发布minimal reproducible example。您的代码试图做太多事情,这也使得您很难缩小您正在尝试做的事情。请编辑问题并简化它。清楚地说明您想要做什么(用文字)、预期结果,然后发布您尝试的 MCVE 以及当前输出和预期输出。
  • @JeffC 正确。因此,如果我抓取 //[contains(@class, 'bet-party')] 然后 //*[contains(@href, '/sports-betting/soccer/')]。链接不会出现在投注方名称旁边,这违背了数据抓取的目的。
  • 我根据您的 cmets 对问题进行了大量编辑,以澄清和简化它。请查看并确保我没有误报您要查找的内容。

标签: selenium xpath css-selectors


【解决方案1】:

您可以使用 XPath 做到这一点。

//div[@class='container-fluid'][not(.//div[contains(@class,'no-outcomes')])]//a[@class='purple-arrow']

分解

//div[@class='container-fluid']

找到一个包含“container-fluid”类的DIV。这些是顶级容器,用于保存每个匹配项的整行 HTML。

[not(.//div[contains(@class,'no-outcomes')])]

它不能有包含类“no-outcomes”的后代DIV。如果DIV 有此类,则该行没有发布赔率,因此我们不想要这些。

//a[@class='purple-arrow']

最后...返回带有“紫色箭头”类的链接。

您可以使用 $x() 在 Chrome 开发工具中对此进行测试。

【讨论】:

    猜你喜欢
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2021-12-02
    • 2010-11-29
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多