抓取动态数据硒 - 无法定位元素

2023-12-13

我对抓取非常陌生,有一个问题。我正在抓取世界计量仪的新冠数据。因为它是动态的——我用硒来做。

代码如下:

from selenium import webdriver
import time

URL = "https://www.worldometers.info/coronavirus/"

# Start the Driver
driver = webdriver.Chrome(executable_path = r"C:\Webdriver\chromedriver.exe")
# Hit the url and wait for 10 seconds.
driver.get(URL)
time.sleep(10)
#find class element
data= driver.find_elements_by_class_name("odd" and "even")
#for loop
for d in data:
    country=d.find_element_by_xpath(".//*[@id='main_table_countries_today']").text
    print(country)

电流输出:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":".//*[@id='main_table_countries_today']"}
  (Session info: chrome=96.0.4664.45)

刮擦表内世界计量仪新冠数据你需要诱导WebDriver等待为了元素可见性()并使用数据框 from Pandas你可以使用以下内容定位策略:

代码块:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

options = Options()
options.add_argument("start-maximized")
s = Service('C:\\BrowserDrivers\\chromedriver.exe')
driver = webdriver.Chrome(service=s, options=options)
driver.get("https://www.worldometers.info/coronavirus/")
data = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "table#main_table_countries_today"))).get_attribute("outerHTML")
df  = pd.read_html(data)
print(df)
driver.quit()

控制台输出:

[         # Country,Other  TotalCases  NewCases  ...  Deaths/1M pop   TotalTests  Tests/ 1M pop    Population
0      NaN         World   264359298  632349.0  ...          673.3          NaN            NaN           NaN
1      1.0           USA    49662381   89259.0  ...         2415.0  756671013.0      2267182.0  3.337495e+08
2      2.0         India    34609741    3200.0  ...          336.0  643510926.0       459914.0  1.399198e+09
3      3.0        Brazil    22118782   12910.0  ...         2865.0   63776166.0       297051.0  2.146975e+08
4      4.0            UK    10329074   53945.0  ...         2124.0  364875273.0      5335159.0  6.839070e+07
..     ...           ...         ...       ...  ...            ...          ...            ...           ...
221  221.0         Samoa           3       NaN  ...            NaN          NaN            NaN  2.002800e+05
222  222.0  Saint Helena           2       NaN  ...            NaN          NaN            NaN  6.103000e+03
223  223.0    Micronesia           1       NaN  ...            NaN          NaN            NaN  1.167290e+05
224  224.0         Tonga           1       NaN  ...            NaN          NaN            NaN  1.073890e+05
225    NaN        Total:   264359298  632349.0  ...          673.3          NaN            NaN           NaN

[226 rows x 15 columns]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抓取动态数据硒 - 无法定位元素 的相关文章

随机推荐

  • 在 MacOS Big Sur 上安装 Netbeans 8.2 未找到 JDK

    我最近升级到 MacOS Big Sur 当尝试打开 NetBeans 8 2 时出现错误 缺少 JDK 并且需要运行某些 NetBeans 模块 请使用 JDK home命令行选项指定JDK安装 我尝试将 JAVA HOME 设置为 JD
  • Android - 触摸通知时提示对话框窗口

    我是 Android 应用程序开发新手 我正在为我的最后一年项目申请 我的应用程序将提醒用户预约 到目前为止 我设法在预约日期的通知栏上显示警报 我的主管要求添加一个功能 当用户在通知栏上单击选项卡时 将会出现一个对话框窗口并显示详细信息
  • ifelse 的意外结果

    我得到了意想不到的结果ifelse功能 vector lt factor c x x y z levels c x y z ifelse class vector factor yes levels vector no unique vec
  • 导航到 OnNavigedTo 的另一个页面?

    为什么该方法Navigate调用时不工作导航至该页面的事件 您可以重现这种行为吗 有什么想法如何避免这个问题 void LockScreenPage OnNavigatedTo Windows UI Xaml Navigation Navi
  • 如何将 div 覆盖在框架集上?

    我需要使用 jQuery 1 6 2 为现有 jsp 页面创建一个请等待页面 我能够使 div 覆盖正常工作 并在页面中心的模式窗口中显示 请稍候 动画 然而 覆盖层仅覆盖其中一个框架集 即中心框架集 html 结构基本上是 为了清楚起见
  • 关闭 AngularJS 中的 URL 操作

    我正在尝试使用 Angular 编写我的第一个网络应用程序 在正常模式下 html5模式关闭 Angular 强制地址的哈希部分看起来像 路径 添加前导 并对特殊字符进行编码 例如 它允许单个 和 在哈希中 并用 3F 和 23 替换其他
  • 如何从Python列表中删除所有重复元素?

    我有一个这样的清单 1 2 3 4 3 5 3 6 7 8 我想从列表中完全删除重复元素 此处 3 如下所示 1 2 4 5 6 7 8 如何在 python 中实现这一点 以便不仅删除第一次出现的重复元素 而且删除所有重复值 您可以使用C
  • 使用 Data studio 修剪 BigQuery 分区

    我对这个问题有一个几乎相同的场景 如何选择BigQuery表中最新的分区 还有一个额外的并发症 我需要在 Data Studio 中显示结果 设置 我有一系列以不同时间间隔出现的数据集 我需要获取最新的分区 因为它们之间的时间段不一致 所以
  • 如何在 SQL 和关系代数中无论列顺序如何只列出每对元组一次?

    我正在做一些书本练习 但找不到有关如何用关系代数表达以下内容的解释 我确实找到了一个不过 SQL 的答案但我感兴趣的是是否有其他方法可以解决这个问题 书中的问题是 找到那些具有相同速度和 RAM 的 PC 型号对 一对只能列出一次 例如 列
  • 什么是拓扑排序

    我在网上查找了很多例子并观看了 YouTube 视频 但我仍然对拓扑排序是什么有点迷失 据我了解 您应该从已访问和未访问的队列开始 并在访问完节点的所有子节点后获取拓扑排序顺序 拓扑排序意味着你会得到一份工作列表和先决条件列表 你必须弄清楚
  • 如何获取当前日期和时间

    如何在 Java 中获取当前日期和时间 我正在寻找相当于DateTime Now来自 C 只需构建一个新的Date没有任何参数的对象 这会将当前日期和时间分配给新对象 import java util Date Date d new Dat
  • 输出 char8_t const* 到 cout 和 wcout,一编译一不

    Since P1423R1为 char8 t char16 t 和 char32 t 添加已删除的 ostream 插入器 如果我们希望将这些类型流式传输到 ostream 我们暂时会遇到需要编写自定义运算符的情况 尝试对 MSVC 201
  • 如何使用jquery获取选定的表行值?

    我需要使用 jquery 通过单击行或链接来获取表中选定的行值 我是 jquery 的新手 任何人都可以帮助我提供示例代码 这将对我有很大帮助 提前致谢 请参阅这个 jsFiddle 片段 http jsfiddle net hU89p 它
  • Flutter:如何停止特定子项的图像过滤器(颜色过滤器/绘画过滤器)?

    我想将 ImageFilter 应用于 ListView 以便所有子项都会受到影响and所有孩子都会互相影响混合颜色 这就是为什么将过滤器应用于子视图而不是列表视图不起作用的原因 没关系 但现在我需要在这些先前绘制的小部件之上放置另一个小部
  • 如何向 Firefox 插件添加循环计时器?

    我正在尝试使用新的插件构建器预览 https builder addons mozilla org 创建一个插件 并且我需要一个大约每 10 分钟运行一次的函数 我尝试了 setInterval 和 setTimeout 但它们都返回以下错
  • JavaScript 中的 getElementsByTagName [重复]

    这个问题在这里已经有答案了 我对纯 JavaScript 的语法很陌生 你知道为什么 getElementsByTagName 在我的简单测试中不起作用吗 var btn document getElementsByTagName butt
  • 将带有日期的 stderr 从 Cron 重定向到日志文件

    bash 脚本从 cron 运行 stderr 被重定向到日志文件 这一切都工作正常 代码是 10 5 22 opt scripts sql fetch 2 gt gt opt scripts logfile txt 我想将日期添加到日志文
  • Java:CompletableFuture.supplyAsync() 不调用异步方法[重复]

    这个问题在这里已经有答案了 让我们假设以下主要方法 public class Async public static void main String args throws Exception CompletableFuture supp
  • java 强制 JTextField 仅为大写

    有没有办法强制所有用户输入JTextFieldJava 中要大写吗 一个完整的工作示例可能会帮助你 import java awt Dimension import java awt FlowLayout import javax swin
  • 抓取动态数据硒 - 无法定位元素

    我对抓取非常陌生 有一个问题 我正在抓取世界计量仪的新冠数据 因为它是动态的 我用硒来做 代码如下 from selenium import webdriver import time URL https www worldometers