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')
相关推荐
冷雨夜中漫步5 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴6 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再6 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
喵手7 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934737 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy8 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威9 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ9 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha9 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy10 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法