[手机Linux PostmarketOS]七, Linux使用selenium爬虫

ops/2024/10/24 9:20:08/

一,selenium安装

# 用pip 安装 selenium
pip3 install selenium --break-system-packages

二,安装浏览器Chrome

    Alpine Linux 环境中没有google Chrome, 使用 Chromium 浏览器作为 Chrome 的替代品,Chromium 是 Chrome 的开源版本,可以在 Alpine Linux 上安装。

sudo apk add chromium安装完后:
chromium --version   #查看版本chromium --help

三,安装Chromedriver

    Alpine Linux 使用的是 musl libc 和 busybox,而不是 glibc,因此它与许多主流 Linux 发行版不同。你可以通过 Alpine 的包管理器 apk 安装  chromium-chromedriver:

sudo apk add chromium-chromedriver

安装完后driver的路径在:/usr/lib/chromium/chromedriver

四,测试

python 代码测试

# -*- coding: utf-8 -*-from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time# 配置无头浏览器选项
options = Options()
options.add_argument("--headless")     # 使用无头模式,无 GUI的Linux服务器必须添加
options.add_argument("--disable-gpu")  # 不使用GPU,有的机器不支持GPU
options.add_argument("--no-sandbox")   # 运行 Chrome 的必需参数
options.add_argument("--disable-dev-shm-usage") 
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)# chromedriver 的路径
driver_executable_path = "/usr/lib/chromium/chromedriver"chrome_service = Service(driver_executable_path)
driver = webdriver.Chrome(service=chrome_service, options=options)driver.get("http://www.baidu.com")# 找到搜索框并输入关键词
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')# 点击搜索按钮
search_button = driver.find_element(By.ID, 'su')
search_button.click()# 等待页面加载
time.sleep(3)# 获取搜索结果
results = driver.find_elements(By.CSS_SELECTOR, '.result.c-container')# 提取标题和链接
for result in results:title = result.find_element(By.TAG_NAME, 'h3').textlink = result.find_element(By.TAG_NAME, 'a').get_attribute('href')print(f'Title: {title}\nLink: {link}\n')# 退出浏览器
driver.quit()

打印结果:

selenium模式
chrome_options.add_argument('--headless')            # 无头模式,可不启用界面显示运行
chrome_options.add_argument('--disable-gpu')        # 禁用GPU加速
chrome_options.add_argument('--start-maximized') #浏览器最大化
chrome_options.add_argument('--window-size=1280x1024') # 设置浏览器分辨率(窗口大小)
chrome_options.add_argument('log-level=3')
chrome_options.add_argument('--user-agent=""')       # 设置请求头的User-Agent
chrome_options.add_argument('--disable-infobars')   # 禁用浏览器正在被自动化程序控制的提示
chrome_options.add_argument('--incognito')              # 隐身模式(无痕模式)
chrome_options.add_argument('--hide-scrollbars')     # 隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('--disable-javascript')  # 禁用javascript
chrome_options.add_argument('--blink-settings=imagesEnabled=false') # 不加载图片, 提升速度
chrome_options.add_argument('--ignore-certificate-errors')   # 禁用扩展插件并实现窗口最大化
chrome_options.add_argument('–disable-software-rasterizer')
chrome_options.add_argument('--disable-extensions')
chrome_options.add_argument('--no-sandbox')  #以最高权限运行
chrome_options.add_argument('--disable-dev-shm-usage')

    ch_options = webdriver.ChromeOptions()# 不加载图片,加快访问速度ch_options.add_experimental_option("prefs", {"profile.mamaged_default_content_settings.images": 2})# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Seleniumch_options.add_experimental_option('excludeSwitches', ['enable-automation'])# ch_options.add_experimental_option("debuggerAddress", "127.0.0.1:9999")ch_options.add_argument('--proxy--server=127.0.0.1:8080')ch_options.add_argument('--disable-infobars')  # 禁用浏览器正在被自动化程序控制的提示ch_options.add_argument('--incognito')browser = webdriver.Chrome(options=ch_options)


http://www.ppmy.cn/ops/128051.html

相关文章

EM算法(期望最大算法、Expectation Maximization Algorithm)

EM算法(期望最大算法、Expectation Maximization Algorithm) 引言 EM算法,全称为期望最大(Expectation Maximization)算法,是一种从不完全数据或有数据丢失的数据集(存在隐含变量)中求解概率模…

python 卸载、安装、virtualenv

前言 本文汇总下python环境的安装与卸载。 卸载python环境 卸载系统环境内的python环境 python_version_number3.10 sudo rm -rf /Library/Frameworks/Python.framework/Versions/${python_version_number}/ sudo rm -rf "/Applications/Python ${python_version_numb…

搜维尔科技:使用CyberGlove数据手套控制机械手遥操作拿鸡蛋

搜维尔科技:使用CyberGlove数据手套控制机械手遥操作拿鸡蛋 使用CyberGlove数据手套控制机械手遥操作拿鸡蛋

开关灯问题(c语言)

样例&#xff1a;10 10 &#xff0c;输出&#xff1a;1&#xff0c;4&#xff0c;9 5 5 &#xff0c;输出&#xff1a;1&#xff0c;4 代码如下 #include<stdio.h> //引入bool值的概念 #include<stdbool.h> int main() {int n 0;//n为灯的数量int m 0;…

23种设计模式之工厂方法模式

文章目录 1. 简介2. 代码2.1 抽象类&#xff1a;Course.java2.2 产品A&#xff1a;JavaCourse.java2.3 产品B&#xff1a;PythonCourse.java2.4 工厂抽象类&#xff1a;CourseFactory.java2.5 产品A的工厂A&#xff1a;JavaCourseFactory.java2.6 产品B的工厂B&#xff1a;PyCo…

rust grpc demo

文章目录 1. 创建项目2. 配置proto2.1 配置Cargo.toml, 内容如下&#xff1a;2.2 创建文件proto/hello.proto, 内容如下&#xff1a;2.3 添加build.rs文件&#xff0c; 内容如下&#xff1a;2.4 项目结构如下&#xff1a;2.5 编译proto文件 3.0 处理服务3.1 项目引入3.2 添加sr…

学习记录:js算法(七十三):跳跃游戏

文章目录 跳跃游戏思路一&#xff1a;贪心算法思路二&#xff1a;动态规划思路三&#xff1a;递归 记忆化搜索思路四&#xff1a;广度优先搜索 (BFS)思路五&#xff1a;深度优先搜索 (DFS) 跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个 下标 。数…

我开源了Go语言连接数据库和一键生成结构体的包【实用】

项目地址&#xff1a;https://gitee.com/zht639/my_gopkg autosql autosql 是一个简化数据库使用的模块&#xff0c;支持常见的数据库&#xff08;MySQL、PostgreSQL、SQLite、SQL Server&#xff09;。该模块不仅提供了数据库连接函数&#xff0c;还能自动生成数据表对应的结…