Python爬虫:selenium模块基本使用

简介: Python爬虫:selenium模块基本使用

参考文档:

Selenium with Python英文文档

Selenium with Python中文翻译文档


from selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException
import time
# 声明浏览器对象
driver = webdriver.Chrome()
# 可用的浏览器对象:
# Firefox,Chrome,Ie,Edge,Opera,Safari,BlackBerry,PhantomJS,Android
# 访问页面
def foo1():
    driver.get("http://www.baidu.com")
    print(driver.page_source)
    # 查找元素
    try:
        p=driver.find_element_by_class_name("p")
    except NoSuchElementException as e:
        print(e)
    """
    # 单个元素
    find_element_by_id
    find_element_by_name
    find_element_by_xpath
    find_element_by_tag_name
    find_element_by_link_text
    find_element_by_class_name
    find_element_by_css_selector
    find_element_by_partial_link_text
    # 多个元素
    find_elements_by_id
    find_elements_by_name
    find_elements_by_xpath
    find_elements_by_tag_name
    find_elements_by_link_text
    find_elements_by_class_name
    find_elements_by_css_selector
    find_elements_by_partial_link_text
    """
    # 通用查找方式
    from selenium.webdriver.common.by import By
    driver.find_element(By.ID, "kw")
    """
    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
    """
# 元素交互
def foo2():
    import time
    driver.get("http://www.baidu.com")
    input = driver.find_element_by_id("kw")
    input.send_keys("淘宝")
    time.sleep(2)
    input.clear()
    input.send_keys("京东")
    button = driver.find_element_by_id("su")
    time.sleep(2)
    button.click()
# 交互动作
# 将动作附加到动作链中串行执行
def foo3():
    driver.get("http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
    # 切换到子frame
    driver.switch_to.frame("iframeResult")
    draggable = driver.find_element_by_id("draggable")
    droppable = driver.find_element_by_id("droppable")
    actions = webdriver.ActionChains(driver)
    actions.drag_and_drop(draggable, droppable)
    actions.perform()
    # 切换回父frame
    driver.switch_to.parent_frame()
# 执行javascript
def foo4():
    driver.execute_script('alert("hello")')
# 获取文本和属性
def foo5():
    driver.get("https://www.zhihu.com/topics")
    # 隐式等待
    driver.implicitly_wait(10)
    # 显示等待
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    wait = WebDriverWait(driver, 10)
    logo = wait.until(EC.presence_of_element_located((By.ID, "zh-top-link-logo")))
    print(logo.text)
    # 获取属性, id, 标签名, 位置, 大小
    print(logo.get_attribute("class"))
    print(logo.id)
    print(logo.location)
    print(logo.tag_name)
    print(logo.size)
# 前进后退
def foo6():
    import time
    driver.get("http://www.taobao.com")
    driver.get("http://www.jd.com")
    driver.get("http://www.qq.com")
    time.sleep(2)
    driver.back()
    time.sleep(2)
    driver.forward()
    time.sleep(3)
# cookie
def foo7():
    driver.get("https://www.zhihu.com/explore")
    print(driver.get_cookies())
    driver.add_cookie({"name": "mouday", "value": "mouday.com"})
    print(driver.get_cookies())
    driver.delete_all_cookies()
    print(driver.get_cookies())
# 选项卡管理
def foo8():
    driver.get("https://www.qq.com/")
    # 开启
    driver.execute_script("window.open()")
    print(driver.window_handles)
    # 切换
    driver.switch_to_window(driver.window_handles[1])
    driver.get("https://www.taobao.com/")
    time.sleep(2)
    # 切换
    driver.switch_to_window(driver.window_handles[0])
    driver.get("https://www.jd.com/")
    time.sleep(2)
# 异常处理
def foo9():
    try:
        driver.get("https://www.google.com")
    except TimeoutException as e:
        print(e.msg)
    try:
        p = driver.find_element_by_class_name("p")
    except NoSuchElementException as e:
        print(e)
# 关闭退出浏览器
driver.close()
driver.quit()
# 如果不退出浏览器,会报错:
# ImportError: sys.meta_path is None, Python is likely shutting down

相关文章
|
1天前
|
数据采集 XML JavaScript
Python爬虫:从人民网提取视频链接的完整指南
Python爬虫:从人民网提取视频链接的完整指南
|
6天前
|
数据采集 Web App开发 API
B站高清视频爬取:Python爬虫技术详解
B站高清视频爬取:Python爬虫技术详解
|
7天前
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
7天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
10天前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
21 4
|
12天前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
32 8
|
24天前
|
数据采集 存储 数据挖掘
深入剖析 Python 爬虫:淘宝商品详情数据抓取
深入剖析 Python 爬虫:淘宝商品详情数据抓取
|
24天前
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
打造高效的Web Scraper:Python与Selenium的完美结合
|
27天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
2月前
|
数据采集 JSON 数据格式
Python爬虫:京东商品评论内容
京东商品评论接口为商家和消费者提供了重要工具。商家可分析评论优化产品,消费者则依赖评论做出购买决策。该接口通过HTTP请求获取评论内容、时间、点赞数等数据,支持分页和筛选好评、中评、差评。Python示例代码展示了如何调用接口并处理返回的JSON数据。应用场景包括产品优化、消费者决策辅助、市场竞争分析及舆情监测。

热门文章

最新文章