Selenium是一个自动化测试工具,可以模拟浏览器的行为,如打开网页,点击链接,输入文本等。Selenium也可以用于爬取网页中的数据,特别是那些动态生成的数据,如表格,图表,下拉菜单等。本文将介绍如何使用Selenium Python爬取动态表格中的复杂元素和交互操作。
以近期汇率数据为例,我们将从以下网址爬取数据:
https://www.investing.com/economic-calendar/investing.com-eur-usd-index-1155
该网页中有一个动态表格,展示了欧元/美元指数的历史数据。我们需要爬取该表格中的所有数据,并保存为DataFrame格式。
# 导入所需的库
import time
from selenium import webdriver
import pandas as pd
#亿牛云 爬虫代理加强版 设置代理服务器信息
proxyHost = "www.16yun.cn"
proxyPort = "3111"
proxyUser = "16YUN"
proxyPass = "16IP"
# 配置Chrome浏览器以使用代理服务器
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server=http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}')
driver = webdriver.Chrome(options=chrome_options)
# 打开目标网页
driver.get("https://www.investing.com/economic-calendar/investing.com-eur-usd-index-1155")
# 等待页面加载完成
time.sleep(10)
# 点击“显示更多”按钮,直到所有数据都显示出来
while True:
try:
# 定位“显示更多”按钮
show_more = driver.find_element_by_xpath('//*[@id="showMoreHistory"]/a')
# 点击按钮
show_more.click()
# 等待一秒
time.sleep(1)
except:
# 如果没有找到按钮或者出现异常,则跳出循环
break
# 定位表格元素
table = driver.find_element_by_id('eventHistoryTable')
# 获取表格中的所有行
rows = table.find_elements_by_tag_name('tr')
# 创建一个空列表,用于存储数据
data = []
# 遍历每一行
for row in rows:
# 获取行中的所有单元格
cells = row.find_elements_by_tag_name('td')
# 如果单元格数量大于0,则说明是数据行,而不是标题行或空行
if len(cells) > 0:
# 创建一个空字典,用于存储一行数据
record = {}
# 将每个单元格的文本和对应的列名作为键值对存入字典
record['Date'] = cells[0].text
record['Actual'] = cells[1].text
record['Forecast'] = cells[2].text
record['Previous'] = cells[3].text
# 将字典追加到列表中
data.append(record)
# 关闭浏览器对象
driver.close()
# 将列表转换为DataFrame对象
df = pd.DataFrame(data)
# 打印DataFrame对象
print(df)
功能说明如下:
该代码通过Selenium库模拟浏览器操作,使用爬虫代理访问指定网页,然后通过定位网页元素、解析数据,并最终将数据转换为DataFrame对象。通过DataFrame对象,可以方便地对网页上的数据进行进一步处理和分析。
通过本文的介绍,我们了解了如何使用Selenium Python爬取动态表格中的复杂元素和交互操作。Selenium是一个强大的爬虫工具,可以应对各种复杂的网页结构和数据类型。希望本文能够对你有所帮助和启发。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有