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

一,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.rhkb.cn/news/455247.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定时任务使用kafka

定时任务使用kafka 在上述业务场景中使用 Kafka 而不是直接定时执行任务有以下几个重要原因: 一、解耦 任务触发与执行分离: 使用 XXL-JOB 定时触发任务并将任务消息发送到 Kafka,实现了任务触发端(通常是调度系统)和…

数字后端零基础入门系列 | Innovus零基础LAB学习Day5

###Module 12 RC参数提取和时序分析 数字后端零基础入门系列 | Innovus零基础LAB学习Day4 数字后端零基础入门系列 | Innovus零基础LAB学习Day3 数字后端零基础入门系列 | Innovus零基础LAB学习Day2 数字后端零基础入门系列 | Innovus零基础LAB学习Day1 ###LAB12-1 这个章节…

机器学习与神经网络:科技的星辰大海

前提 近日,2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一…

kotlin 入门总结

目录 1、构造函数 2、数据类 data class, 3、object 单例类,相当于java线程安全的懒加载 4、companion object 伴生对象,类似于包装静态值的一个区域块 5、解构 6、空安全 7、条件语句 8、集合 9 属性和支持属性 属性 支持属性 10 …

kali的下载与配置

kali.org官网下载 选择VMware的版本下载,并解压,复制解压后的路径 在虚拟机中,点击文件,打开 默认的账户密码均为kali 修改密码 sudo passwd root 切换root用户 su root 查看IP ip addr IP:192.168.184.131 粘贴复制shiftinsert…

从图像识别到聊天机器人:Facebook AI的多领域应用

随着人工智能技术的快速发展,Facebook已在多个领域内广泛应用AI技术,以提升用户体验、提高效率并推动创新。从图像识别到聊天机器人,Facebook的AI应用涵盖了社交媒体的方方面面,下面我们将深入探讨这些应用的具体实现及其对用户生…

ecmp观察

文章目录 简述选路策略实验说明开始验证 简述 ECMP(Equal Cost Multi Path)等价多路径,又称等价路由。指到达同一个目的IP或者目的网段存在多条COST值相等的不同路由路径。在具有多条到达同一目的地的网络链路的环境中,传统路由技…

2.1 > Shell 是什么、如何更熟练的使用 Bash Shell

Shell 基础知识 Shell是计算机操作系统中的一个命令行解释器,由C语言编写,用于用户与操作系统之间进行交互。用户可以通过Shell输入命令,操作系统接收到这些命令后执行相应的操作。Shell一般还提供了编程语言的基本功能,允许用户…

在 VS Code 中轻松绘图:Draw.io Integration 插件详解

文章目录 在 VS Code 中轻松绘图:Draw.io Integration 插件详解一、什么是 Draw.io Integration 插件?二、插件安装指南1. 安装步骤2. 配置插件 三、如何使用 Draw.io Integration 插件?1. 创建新绘图文件2. 编辑现有图表3. 常用功能与技巧 四…

网安加·百家讲坛 | 徐一丁:金融机构网络安全合规浅析

作者简介:徐一丁,北京小西牛等保软件有限公司解决方案部总监,网络安全高级顾问。2000年开始从事网络安全工作,主要领域为网络安全法规标准研究、金融行业安全咨询与解决方案设计、信息科技风险管理评估等。对国家网络安全法规标准…

【数据结构与算法】《布隆过滤器:高效数据筛选的魔法工具》

标题:《布隆过滤器:高效数据筛选的魔法工具》 摘要:本文将带你深入了解布隆过滤器这一神奇的数据结构。从研究推荐系统中的已读内容排除和重复内容去重问题引入,详细介绍布隆过滤器的产生契机、设计思想、优缺点及用途。通过阅读…

机器视觉运动控制一体机在DELTA并联机械手视觉上下料应用

市场应用背景 DELTA并联机械手是由三个相同的支链所组成,每个支链包含一个转动关节和一个移动关节,具有结构紧凑、占地面积小、高速高灵活性等特点,可在有限的空间内进行高效的作业,广泛应用于柔性上下料、包装、分拣、装配等需要…

MyBatis 基础知识:配置文件、映射器与 SQL 示例详解

本篇博客将深入探讨 MyBatis 的基础知识,包括配置文件的设置、映射器的使用以及实际的 SQL 示例。 文章目录 前言 准备工作 根据主键删除 日志输出 ​编辑 预编译SQL SQL注入 ​编辑 参数占位符 新增员工 主键返回 更新 查询(根据ID查询&#x…

世界前沿思想升命学说:鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪

在当今哲学的前沿探索中,山东济南的名人颜廷利教授的《升命学说》一书以其独到的见解和深刻的洞察力,为我们揭示了十二生肖背后的象征意义。这些生肖包括鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗以及猪,每一种动物都承载着独特的文化寓意…

哥德巴赫猜想渐行渐远

我现在的工作,表明经典分析可能出了问题,如此则连Vinogradov的三素数定理都不成立了,更别说基于L-函数方程的陈氏定理“12”了。事实上即使L-函数方程成立,由于我指出Siegel定理不成立,陈景润和张益唐的工作就不成立。…

卡牌抽卡机小程序,带来新鲜有趣的拆卡体验

随着移动信息技术的发展,小程序得到了快速普及,遍布到了各行各业中,成为企业发展的利器。如今,卡牌抽卡机小程序层出不穷,为玩家带来了更多有趣的拆卡体验。 卡牌在今年中受到了广泛关注,“小马宝莉”等一…

Qt中使用线程之QRunnable

1、自定义1个子类继承自QRunnable 2、重写run方法,编写子线程的业务逻辑 3、使用QThreadPool的全局方法来开启这个线程 4、线程的回收不需要关注,由QThreadPool处理 5、缺点:无法使用信号槽机制 6、适合一些不需要和主线程通信的耗时的任…

如何使用的是github提供的Azure OpenAI服务

使用的是github提供的Azure OpenAI的服务gpt-4o 说明:使用的是github提供的Azure OpenAI的服务,可以无限薅羊毛。开源地址 进入: 地址 进入后点击 右上角“Get API key”按钮 点击“Get developer key” 选择Beta版本“Generate new to…

[Ansible实践笔记]自动化运维工具Ansible(一):初探ansibleansible的点对点模式

文章目录 Ansible介绍核心组件任务执行方式 实验前的准备更新拓展安装包仓库在ansible主机上配置ip与主机名的对应关系生成密钥对将公钥发送到被管理端,实现免密登录测试一下是否实现免密登录 常用工具ansibleansible—docansible—playbook 主要配置文件 Ansible 模…

【数据结构】快速排序(三种实现方式)

目录 一、基本思想 二、动图演示(hoare版) 三、思路分析(图文) 四、代码实现(hoare版) 五、易错提醒 六、相遇场景分析 6.1 ❥ 相遇位置一定比key要小的原因 6.2 ❥ 右边为key,左边先走 …