python - 如何使用 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)
解决方案
您感兴趣的内容是在您单击按钮时生成的,因此您希望找到该按钮。一百万种方法可以做到这一点,但我建议如下:
element = driver.find_elements(By.XPATH, '//button')
对于您的具体情况,您还可以使用:
element = driver.find_elements(By.CSS_SELECTOR, 'button[class|="sc"]')
获得按钮元素后,我们可以执行以下操作:
element.click()
在此之后解析页面应该会为您提供您正在寻找的 javascript 生成的内容
推荐阅读
- arduino - 为什么 Serial.read() 在最后添加一个额外的字符?我该如何解决?
- php - Curl - Php 获取使用 ajax 更新的元素内容
- sf - geom_sf:绘制多个系列
- python - 如何将特定行的熊猫数据框中的值更改为 NaN?
- c++ - 非成员友元函数重载运算符是否被继承?
- python - argparse 以验证 python 中的未知参数
- sql - Anylogic:将参数值写入数据库表
- mongodb - PostgreSQL 和 MongoDB WHERE IN 条件
- sql - 如何部署一个没有人可以看到/查看源脚本但可以执行它的编译数据库
- typescript - 即使字段“type”是 const,Typescript 也不会推断类型