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')
相关推荐
小陈的进阶之路4 小时前
Claude Code辅助测试:导入篇skills
python·自动化
whcyhhh5 小时前
头歌实践教学平台:大数据存储2023(六)
大数据·数据库·python
for_ever_love__6 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
ly76896 小时前
Python 全面入门:从核心语法到工程实践
开发语言·python
Niuguangshuo8 小时前
DeepFilterNet 3:端侧实时全带降噪的开源标杆
python
第一程序员8 小时前
AI 辅助编程的 7 个误区:把模型当高级搜索引擎是对它的最大浪费
python·rust·github
Groundwork Explorer9 小时前
W5500 网卡编程初始化与使用指南
python·单片机
逸Y 仙X10 小时前
MCP(模型控制协议)完全指南:从核心概念到实战开发
python·大模型·llm·ai编程·mcp
WILLF10 小时前
前端视角:Python requests vs JS axios
前端·python
哒哒哒52852011 小时前
69. Python: 核心语法-面向对象基础-案例(教务系统)
python