【问题标题】:Python selenium web scrape dynamic content within a nested span that has no class namePython selenium web 在没有类名的嵌套范围内抓取动态内容
【发布时间】:2021-09-30 17:56:14
【问题描述】:

我正在尝试解析嵌套跨度结构中的动态内容。我要获取的文本是“动态内容2”,它是第二个跨度元素(class=“第二跨度”)的内容,并且它的值会定期更新。

<html>
<div class="outer div">
     <span class="first span">
           <span>random content</span>
     </span>
     <span class="second span">
           <span>dynamic content2</span>
     </span>
</div>
</html>

我是网络抓取的新手,目前这就是我所拥有的:

import os, sys
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup


opts = Options()
opts.add_argument(" --headless")

chrome_driver = os.getcwd() +"\\chromedriver.exe"

# Instantiate a webdriver
driver = webdriver.Chrome(options=opts, executable_path=chrome_driver)
driver.get("some url")

soup_file=driver.page_source
soup = BeautifulSoup(soup_file)

# works fine
print(soup.title.get_text())

print("Testing getting dynamic element")

spanId = 'second span'
mySpan = soup.find("span", class_ = spanId )
print(mySpan.get_text())
driver.quit()

但是没有返回任何东西。任何帮助表示赞赏。

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping


    【解决方案1】:

    这是dynamic content2的输出

    代码:

    tag="""
    <html>
    <div class="outer div">
         <span class="first span">
               <span>random content</span>
         </span>
         <span class="second span">
               <span>dynamic content2</span>
         </span>
    </div>
    </html>
    """
    
    soup = BeautifulSoup(tag, 'html.parser')
    
    #span= soup.select_one('div.outer.div > span.second.span >span').text
    #or
    span= soup.select_one('span.second.span >span').text
    print(span)
    

    输出:

    dynamic content2
    

    【讨论】:

    • 感谢您的回复,如果第二个跨度的类名包含一些特殊字符,例如 dynamic content2 我应该放 \ 来转义这些字符吗?仍然没有得到动态内容,错误AttributeError: 'NoneType' object has no attribute 'text'
    • 实际上,根据您的 html 文档,我的解决方案是正确的。从您的评论中,我可以看到 span 标签包含多个类。每个空格分隔类值。您的评论正确选择如下:span.border-color-main-secondary.px-3.5.py-1.md:py-1.5
    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2016-08-15
    • 2021-04-28
    • 2015-07-18
    • 1970-01-01
    • 2016-09-15
    相关资源
    最近更新 更多