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

相关文章
|
10天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
12天前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
19天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
60 6
|
9天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
24 5
|
13天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
18天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
37 7
|
20天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
42 6
|
17天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
17天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
107 1

热门文章

最新文章