相关文章推荐
绅士的机器人  ·  【python】处理点云数据并三维显示_py ...·  1 年前    · 
果断的凉茶  ·  框架源码系列六:Spring源码学习之Spr ...·  1 年前    · 
有腹肌的煎饼果子  ·  matpool 行业动态 | ...·  2 年前    · 
烦恼的凉面  ·  sql 上一条减下一条-掘金·  2 年前    · 
行走的扁豆  ·  java - Spring ...·  2 年前    · 
Code  ›  使用 Python Selenium 提取动态生成下拉选项开发者社区
webdriver 软件 python selenium
https://cloud.tencent.com/developer/article/2294808
体贴的柳树
1 年前
作者头像
jackcode
0 篇文章

使用 Python Selenium 提取动态生成下拉选项

原创
前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 爬虫资料 > 使用 Python Selenium 提取动态生成下拉选项

使用 Python Selenium 提取动态生成下拉选项

原创
作者头像
jackcode
发布 于 2023-06-07 16:05:53
350 0
发布 于 2023-06-07 16:05:53
举报
在进行网络数据采集和数据分析时,处理动态生成的下拉菜单是一个常见的挑战。Selenium是一个强大的Python库,可以让你自动化浏览器操作,比如从动态生成的下拉菜单中选择选项。这是一个常见的网页爬虫和数据收集者面临的挑战,但是Selenium让它变得简单。
  • 你可以使用 Select 类来从下拉元素中选择你想要的选项,你可以通过它的ID或类名来定位下拉元素。这样,你就可以快速地访问动态的选项,并选择你需要的那个进行分析。
  • Selenium具有功能和灵活性,可以无缝地与网站交互,并高效地收集和处理数据。
  • Selenium支持多种浏览器和操作系统,可以适应不同的环境和需求。

使用Selenium选择下拉菜单中的选项只需要以下几个步骤:

  1. 导入必要的模块,如 from selenium import webdriver 和 from selenium.webdriver.support.ui import Select 。
  2. 创建一个webdriver实例,如 driver = webdriver.Chrome() 。
  3. 导航到有下拉菜单的网站,如 driver.get("https://example.com") 。
  4. 通过ID或类名定位下拉元素,如 drop_down = driver.find_element_by_id("drop-down-id") 。
  5. 从下拉元素创建一个Select对象,如 select = Select(drop_down) 。
  6. 通过可见文本、value属性或索引选择一个选项,如 select.select_by_visible_text("Option 1") 或 select.select_by_value("option-1") 或 select.select_by_index(0) 。

下面是demo示例:

import time
from bs4 import BeautifulSoup
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 亿牛云 爬虫代理加强版 
# 根据代理IP认证信息创建一个包含代理主机、端口、用户名和密码的字典
proxy_auth = {
    'username': '16YUN',
    'password': '16IP',
    'proxyHost': 'www.16yun.cn',
    'proxyPort': '31111'
# 设置爬虫代理加强版的代理IP选项
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server=http://{proxy_auth["username"]}:{proxy_auth["password"]}@{proxy_auth["proxyHost"]}:{proxy_auth["proxyPort"]}')
# 创建浏览器驱动并设置代理IP选项
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
driver.maximize_window()
# 设置需要采集的URL
driver.get("https://example.com")
# 使用显式等待,等待下拉菜单元素加载和可见
wait = WebDriverWait(driver, 10)
dropdown = wait.until(EC.visibility_of_element_located((By.ID, "MainContent_routeList_chosen")))
# 查找活动结果元素
find_route_takin = driver.find_element(By.CLASS_NAME, "active-result")
 
推荐文章
绅士的机器人  ·  【python】处理点云数据并三维显示_pythonplt3维点-CSDN博客
1 年前
果断的凉茶  ·  框架源码系列六:Spring源码学习之Spring IOC源码学习 - 小不点啊 - 博客园
1 年前
有腹肌的煎饼果子  ·  matpool 行业动态 | 记一次爬虫逆向攻防的详细全过程
2 年前
烦恼的凉面  ·  sql 上一条减下一条-掘金
2 年前
行走的扁豆  ·  java - Spring Security 实战干货:AuthenticationManager的初始化细节 - 个人文章 - SegmentFault 思否
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号