【问题标题】:Scraping only text using selenium仅使用 selenium 抓取文本
【发布时间】:2021-04-15 09:21:40
【问题描述】:

我正在尝试使用以下网站中提到的硒来抓取文本(动态)。我在整个互联网上进行了搜索,但是当文本出现在单独的 div/p/span 或任何其他标签中时,我得到了如何抓取文本。如果您有任何想法,请提供帮助。

<div class='css-87uc0g e1tk4kwz1'>
    Text
    <span>
        4.5 
        <span> ::before </span>
    </span>
<div>

我只想在这里提取文本,但 span 标签不允许。

注意: text 的值是动态的。

【问题讨论】:

    标签: python selenium web-scraping webdriver


    【解决方案1】:

    使用以下xpath 找到div 元素并使用javascript executor 并获取第一个子值。

    element=driver.find_element_by_xpath("//div[.//span[contains(.,'Rating')]]")
    print(driver.execute_script('return arguments[0].firstChild.textContent;', element).strip()) 
    

    或者您可以简单地替换该值。

    element=driver.find_element_by_xpath("//div[.//span[contains(.,'Rating')]]")
    print(element.text.replace(driver.find_element_by_xpath("//span[contains(.,'Rating')]").text,'').strip())
    

    【讨论】:

    • 感谢您的想法,但是否有更通用的方法来获取元素的文本本身,而该元素内的元素数量可以不同?
    • @Eliyahu :这取决于 html 的结构。 Java 脚本执行器发现非常有用。如果html结构有新行我们可以使用pythonsplitline()来获取值。
    • @Bidhya Pokharel :请检查更新的答案,让我知道这是怎么回事?
    • 对不起,我更新了问题。没有静态文本作为“评级”,我刚刚写下来以显示有一些跨度标签。但是我使用 css 类完成了它,然后替换了您提到的评级(4.5)。谢谢分享!!
    猜你喜欢
    • 2020-12-29
    • 2017-03-26
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多