代码之家  ›  专栏  ›  技术社区  ›  ARH

如何使用Selenium识别网站中使用的所有标签

  •  1
  • ARH  · 技术社区  · 2 年前

    我正在努力实现的BeautifulSoup等效目标是:

    page_soup = soup(page_html)
    tags = {tag.name for tag in page_soup.find_all()}
    tags
    

    如何使用硒来实现这一点?我只是想打印出一个网站使用的独特标签,而不必遍历整个HTML源代码,这样我就可以开始分析它,并从网站的特定部分中获取信息。我现在不在乎标签的内容是什么,我只想知道使用了什么标签。

    我偶然发现了一个答案,但不确定是否有更优雅的做事方式是这样的。。。

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.common.by import By
    
    website = 'https://www.afr.com'
    
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    driver.get(website)
    
    el = driver.find_elements(by=By.CSS_SELECTOR, value='*')
    
    tag_list = []
    
    for e in el:
        tag_list.append(e.tag_name)
    
    tag_list = pd.Series(tag_list).unique()
    
    for t in tag_list:
        print(t)
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   marinovik    2 年前

    Beautifulsoup更适合此特定场景。

    但如果您仍想使用硒,可以尝试:

    elems = driver.find_elements_by_tag_name('*')
    
    tags = []
    for x in elems:
        taggs.append(x.tag_name)
    

    相当于:

    elems = driver.find_elements_by_tag_name('*')
    
    tags = [x.tag_name for x in elems]
    

    如果最终只想获得唯一值,可以使用 set() 内置数据类型,例如:

    set(tags)