首页 > 解决方案 > 如何使用 selenium 和美丽的汤刮掉隐藏的类数据

问题描述

我正在尝试抓取启用了 java 脚本的网页内容。我需要在该网站的表格中提取数据。然而,表格的每一行都有按钮(箭头),我们可以通过它获得该行的附加信息。

我需要提取每一行的附加描述。通过检查可以观察到每一行的那些箭头的内容属于同一类。但是,该类隐藏在源代码中。只有在检查时才能观察到。我试图稀疏的数据来自网页

我用过硒和美丽的汤。我可以抓取表格的数据,但不能抓取表格中那些箭头的内容。我的 python 正在为该箭头的类返回一个空列表。但适用于普通表数据的类。

from bs4 import BeautifulSoup
from selenium import webdriver

browser = webdriver.Firefox()
browser.get('https://projects.sfchronicle.com/2020/layoff-tracker/')
html_source = browser.page_source  
soup = BeautifulSoup(html_source,'html.parser')
data = soup.find_all('div',class_="sc-fzoLsD jxXBhc rdt_ExpanderRow")
print(data.text)

标签: pythonseleniumweb-scrapingbeautifulsoupscreen-scraping

解决方案


您感兴趣的内容是在您单击按钮时生成的,因此您希望找到该按钮。一百万种方法可以做到这一点,但我建议如下:

element = driver.find_elements(By.XPATH, '//button')

对于您的具体情况,您还可以使用:

element = driver.find_elements(By.CSS_SELECTOR, 'button[class|="sc"]')

获得按钮元素后,我们可以执行以下操作:

element.click()

在此之后解析页面应该会为您提供您正在寻找的 javascript 生成的内容


推荐阅读