[手机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

ubuntu系统:

sudo apt-get install chromium-browser

三,安装Chromedriver

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

sudo apk add chromium-chromedriver

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

                                         /usr/bin/chromedriver

ubuntu系统:

sudo apt-get install chromium-chromedriver

安装完后driver的路径在:/usr/bin/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.mzph.cn/news/883370.shtml

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

相关文章

在GeoTools中的Shapefile属性表读取效率之Shp与Dbf对比

目录 前言 一、POI测试数据简介 1、选用的POI数据 2、关于数据的属性数据 二、属性数据读取的两种方式实现 1、基于DbaseFileReader的读取 2、基于SimpleFeatureSource的读取 三、实际运行对比 1、内存和CPU占用情况 2、运行耗时情况 四、总结 前言 众所周知&#x…

【C++/Qt 高精度计算qreal temp = static_cast<qreal>(nwidth) / nImgWidth;】

这行代码是C中使用Qt框架时的一个类型转换示例。下面是对这行代码的详细解释&#xff1a; 代码解释 qreal temp1 static_cast<qreal>(nwidth) / nImgWidth;qreal: qreal是Qt框架中定义的一个类型&#xff0c;通常用于表示浮点数。它实际上是float或double的别名&#…

github上传文件代码以及其它github代码

echo "# booksystem2" >> README.md git init git add README.md(此段省略) $ git add . //加的 git commit -m "first commit" git branch -M main git remote add origin gitgithub.com:yuyyyyyydek/booksystem2.git git push -u origin main …

MoonBit 双周报 Vol.58:原生后端支持、多行字符串插值、json.inspect 功能等多项关键特性取得显著进展!

MoonBit支持native后端 Wasm-gc 后端支持 Js-string-builtins proposal 当通过编译选项 -use-js-builtin-string 开启使用 Js-string-builtins 之后&#xff0c;Moonbit 面向 wasm-gc 后端时&#xff0c;会使用 JavaScript 中的字符串类型表示 MoonBit 中的字符串&#xff0…

Unity3D 开发技巧

视频教程&#xff1a; Unity3D 开发技巧分享&#xff0c;你可能不知道的小知识 Unity中文课堂教程地址&#xff1a; Unity3D开发-你可能不知道的知识 | Unity 中文课堂 Start 函数可以用协程 默认协同函数 Start 可将 void 改为IEnumerator 作为协程启动 using System.Colle…

多层感知机的从零实现与softmax的从零实现(真·0000零基础)

今天再读zh.d2l书&#xff08;4.2. 多层感知机的从零开始实现 — 动手学深度学习 2.0.0 documentation&#xff09;&#xff0c; 看了关于多层感知机的从零实现与softmax的从零实现 目录 mlp从零实现&#xff0c; 点击“paddle”的代码 点击“torch”的代码 训练 参数解…

网络爬虫-Python网络爬虫和C#网络爬虫

爬虫是一种从互联网抓取数据信息的自动化程序&#xff0c;通过 HTTP 协议向网站发送请求&#xff0c;获取网页内容&#xff0c;并通过分析网页内容来抓取和存储网页数据。爬虫可以在抓取过程中进行各种异常处理、错误重试等操作&#xff0c;确保爬取持续高效地运行 1、Python网…

DataSophon集成ApacheImpala的过程

注意: 本次安装操作系统环境为Anolis8.9(Centos7和Centos8应该也一样) DataSophon版本为DDP-1.2.1 整合的安装包我放网盘了: 通过网盘分享的文件&#xff1a;impala-4.4.1.tar.gz等2个文件 链接: https://pan.baidu.com/s/18KfkO_BEFa5gVcc16I-Yew?pwdza4k 提取码: za4k 1…

C#与C++交互开发系列(十二):托管和非托管内存管理策略

前言 在进行C#与C互操作开发时&#xff0c;内存管理是一个非常重要的环节。由于C#采用托管内存管理&#xff08;由垃圾回收机制GC控制&#xff09;&#xff0c;而C则使用手动内存管理&#xff08;需要开发者负责分配和释放内存&#xff09;&#xff0c;因此跨语言调用时&#…

光耦的应用

什么是光耦 光耦是一种实现信号隔离的元器件&#xff0c;通常用于各部分电路之间&#xff0c;使其不互相受到影响。 工作原理 光耦是由一个发光二极管和一个光敏三极管封装而成的。其使用原理为&#xff1a; 当发光二极管有信号输入时&#xff0c;则会被点亮&#xff0c;此时…

PHP-FPM 性能配置优化

4 核 8 G 服务器大约可以开启 500 个 PHP-FPM&#xff0c;极限吞吐量在 580 qps &#xff08;Query Per Second 每秒查询数&#xff09;左右。 Nginx php-fpm 是怎么工作的&#xff1f; php-fpm 全称是 PHP FastCGI Process Manager 的简称&#xff0c;从名字可得知&#xff…

OJ在线编程常见输入输出(java版本)

基础知识 BufferedReader 概述 BufferedReader是Java I/O中的一个类&#xff0c;它是一个带缓冲区的字符输入流&#xff0c;用于从字符输入流中读取字符。它提供了一种逐行读取文本文件的方法&#xff0c;可以轻松地读取大量文本数据&#xff0c;并且可以通过使用缓冲区来提…

基于SSM的“众优”大学生家教平台的设计与实现

前言 对于当今社会的人们来说&#xff0c;互联网技术是必不可少的&#xff0c;随着经济和技术的不断发展&#xff0c;计算机已经深入到各个领域。“众优”大学生家教平台将人们的时间需求与计算机技术结合起来&#xff0c;架起一座桥梁&#xff0c;使用在线查看“众优”大学生…

设计模式讲解

设计原则 单一职责原则 > 一个对象应该只包含单一的职责&#xff0c;并且该职责被完整地封装在一个类中 > //一个人类 public class People {/*** 人类会编程*/public void coding(){System.out.println("int mian() {");System.out.println(" print…

CI/CD 流水线系统-开源框架Tekton

文章目录 CI/CD 流水线系统-开源框架Tekton什么是TektonTekton优点Tekton 组件介绍Tekton 概念术语 CI/CD 流水线系统-开源框架Tekton 什么是Tekton 官网&#xff1a;https://tekton.dev/ Tekton 是一个强大、灵活的构建 CI/CD 流水线系统的开源框架,允许开发者构建、测试和…

【牛客算法】某司面试算法题:循环右移二叉树

一、算法题描述 1.1 算法描述 现有一棵n个节点构成的二叉树&#xff0c;请你将每一层的节点向右循环位移k位。某层向右位移一位(即k1)的含义为&#xff1a; 若当前节点为左孩子节点&#xff0c;会变成当前节点的双亲节点的右孩子节点。 若当前节点为右儿子&#xff0c;会变成…

直播系统源码技术搭建部署流程及配置步骤

系统环境要求 PHP版本&#xff1a;5.6、7.3 Mysql版本&#xff1a;5.6&#xff0c;5.7需要关闭严格模式 Nginx&#xff1a;任何版本 Redis&#xff1a;需要给所有PHP版本安装Redis扩展&#xff0c;不需要设置Redis密码 最好使用面板安装&#xff1a;宝塔面板 - 简单好用的…

springboot中redis并发锁的等待时间设置长短

问题&#xff1a;等待时间我设置的大一点&#xff0c;还是立刻抛出错误不等待&#xff1b;个人是觉得要立刻抛出错误&#xff0c;首先如果同一把锁并发量太大&#xff0c;没有限流&#xff0c;会造成服务器连接数立刻达到最大连接数&#xff0c;服务不可用&#xff1b;其次等待…

Android——事件冲突处理

当我们给列表的item设置了点击事件后&#xff0c;又给item中的按钮设置了点击事件&#xff0c;此时item的点击事件会失效。 解决 给item的布局xml中设置以下属性 android:descendantFocusability"blocksDescendants"<LinearLayout xmlns:android"http://sc…

HT7181 16.8V,14A高效升压转换器

1、特征 输入电压范围:2.7V-16V 输出电压范围:最高16.8V 固定开关频率:360kHz 可编程峰值电流:14A 高转换效率: 94% (VIN 7.2V, VOUT9.3V, IOUT1.5A) 90% (VIN 7.2V, VOUT9.3V, IOUT 7A) 93% (VIN 7.2V, VOUT12V, IOUT 1.5A) 90% (VIN 7.2V, VOUT12V, IOUT 5.5A) 90% (VIN …