selenium - Selenium 循环,表格缺少第一行和最后一列
问题描述
我正在尝试获取下面 url 中显示的表格。但是结果却漏掉了第一行(2021-1)和最后一列(净(亿1))。我做错了什么?
from selenium import webdriver
driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
driver.get('http://www.chinamoney.com.cn/chinese/hb/')
rws = driver.find_elements_by_xpath("//table/tbody/tr")
r = len(rws)
cols = driver.find_elements_by_xpath("//thead/tr/td")
c = len(cols)
element = []
row = []
for i in range(1,r):
for j in range(1,c):
d=driver.find_element_by_xpath("//tr["+str(i)+"]/td["+str(j)+"]").text
row.append(d)
element.append(row)
driver.close()
element
解决方案
- 您应该使用从 0 开始的范围,而不是从 1 开始
- 此外,您应该在访问表格内容之前添加一些等待以让页面完全加载。
我将在这里添加一个简单的延迟,但最好使用显式等待。请查看以下代码是否更适合您:
from selenium import webdriver
driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
driver.get('http://www.chinamoney.com.cn/chinese/hb/')
time.sleep(5)
rws = driver.find_elements_by_xpath("//table/tbody/tr")
r = len(rws)
cols = driver.find_elements_by_xpath("//thead/tr/td")
c = len(cols)
element = []
row = []
for i in range(r):
for j in range(c):
d=driver.find_element_by_xpath("//tr["+str(i)+"]/td["+str(j)+"]").text
row.append(d)
element.append(row)
driver.close()
element
推荐阅读
- javascript - 当它是一个 URL 时下载 PDF
- ios - 使用 sudo gem install cocoapods 更新 cocopods 后,它仍然显示旧版本
- javascript - Express CORS 不适用于 socket.io
- libreoffice - 显示简单 TextBox 形状的 LibreOffice 宏
- android - 获取真实日期,当用户从 android studio 中的设置更改日期时
- scikit-learn - 为什么每次运行程序时我的 Pearson 相关系数(和 MSE)都会不断变化?
- c# - 如何在asp中每天运行cron作业。网络核心应用?
- javascript - 代码编辑器无法识别 javascript 函数
- python - while 循环 + if 年龄询问程序中的条件语句
- sql - 在没有游标的情况下更新每个选择行结果