python爬虫(三)----Selenium

目录

[1. Selenium](#1. Selenium)

[1.1 Selenium是啥](#1.1 Selenium是啥)

[1.2 安装chrom Driver](#1.2 安装chrom Driver)

[1.3 selenium 使用](#1.3 selenium 使用)

[1.4 selenium元素定位](#1.4 selenium元素定位)

[1.5 访问元素信息](#1.5 访问元素信息)

[1.6 交互](#1.6 交互)

[2. Phantomjs、Chrom handless](#2. Phantomjs、Chrom handless)


1. Selenium

1.1 Selenium是啥

自动化Web浏览器操作

主要用于Web应用程序的测试

支持多操作系统、多浏览器(dirver)

支持无界面浏览器操作(自动交互)

1.2 安装chrome Driver

chrome deriver下载

需要注意 driver 与 chrom版本对应

1.3 selenium 使用

python 复制代码
# (1)导入selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# (2) 创建浏览器操作对象
path = 'chromedriver.exe'
# 创建 Service 对象
service = Service(executable_path=path)
# 创建 WebDriver 对象
browser = webdriver.Chrome(service=service)

# (3)访问网站
url = 'https://www.jd.com/'
browser.get(url)
# page_source获取网页源码
content = browser.page_source
print(content)

1.4 selenium元素定位

selenium3和selenium4的语法有一定不同

button = browser.find_element(By.ID, 'chat-submit-button')

button2 = browser.find_elements(By.ID, 'chat-submit-button')
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"

python 复制代码
button = browser.find_element(By.ID, 'chat-submit-button')

button2 = browser.find_element(By.NAME, 'wd')

button3 = browser.find_elements(By.TAG_NAME, 'input')

button4 = driver.find_element(By.CLASS_NAME, "btn-primary")

button5 = browser.find_element(By.LINK_TEXT, '直播')

button6 = browser.find_element(By.PARTIAL_LINK_TEXT, '直')

button7 = browser.find_elements(By.XPATH, '//button[@id="chat-submit-button"]')

button8 = browser.find_element(By.CSS_SELECTOR, '#chat-submit-button')

print(button)

1.5 访问元素信息

获取元素属性

.get_attribute('class')

获取元素文本

.text

获取标签名

.tag_name

python 复制代码
input = browser.find_element(By.ID, 'chat-textarea')
# 获取标签的属性
print(input.get_attribute('class'))
# 获取标签的名字
print(input.tag_name)
# 获取元素文本
a = browser.find_element(By.LINK_TEXT,'新闻')
print(a.text)

1.6 交互

点击:click()

输入:send_keys()

后退操作:browser.back()

前进操作:browser.forword()

模拟JS滚动:

js='document.documentElement.scrollTop=100000'

browser.execute_script(js) 执行js代码

获取网页代码:page_source

退出:browser.quit()

2. Phantomjs、Chrome handless

无界面浏览器。不进行css渲染,运行效率高。

Phantomjs基本被淘汰,建议使用Chrom handless

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

def share_browser():
    # 替换为你的 chromedriver 路径
    path = 'chromedriver.exe'  # Windows 示例,如 chromedriver.exe
    service = Service(executable_path=path)
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  # 无头模式
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    # 创建浏览器实例
    browser = webdriver.Chrome(service=service, options=options)
    return browser


browser = share_browser()

url = 'https://www.baidu.com'

browser.get(url)
browser.save_screenshot('baidu22.png')
相关推荐
树獭非懒3 小时前
AI大模型小白手册|Embedding 与向量数据库
后端·python·llm
唐叔在学习6 小时前
就算没有服务器,我照样能够同步数据
后端·python·程序员
曲幽8 小时前
FastAPI流式输出实战与避坑指南:让AI像人一样“边想边说”
python·ai·fastapi·web·stream·chat·async·generator·ollama
Flittly8 小时前
【从零手写 AI Agent:learn-claude-code 项目实战笔记】(1)The Agent Loop (智能体循环)
python·agent
vivo互联网技术10 小时前
ICLR2026 | 视频虚化新突破!Any-to-Bokeh 一键生成电影感连贯效果
人工智能·python·深度学习
敏编程11 小时前
一天一个Python库:virtualenv - 隔离你的Python环境,保持项目整洁
python
喝茶与编码13 小时前
Python异步并发控制:asyncio.gather 与 Semaphore 协同设计解析
后端·python
zone773913 小时前
003:RAG 入门-LangChain 读取图片数据
后端·python·面试
用户83562907805113 小时前
在 PowerPoint 中用 Python 添加和定制形状的完整教程
后端·python