无界面 centOS 中使用 DrissionPage

无界面 centOS 中使用 DrissionPage

    • 1. centos 安装 chrome
    • 2. python 代码
    • DrissionPage简介

某电影网站使用了加密js,无法直接从主页上爬取电影信息,只好借助 selenium 等工具。selenium 需要在服务器上安装浏览器和对应的 driver。我的服务器是无界面 centOS,未找到对应的办法。偶然看到 DrissionPage,一个国人开发的网页自动化工具,直接使用系统中的 chromium(可以指定chrome、edge),不需要 driver。尝试了一下,可以解决问题。

需要解决两个事情:

  • centOS 上安装安装 chrome
  • DrissionPage 使用无头模块

1. centos 安装 chrome

添加 Chrome 的 Yum Repository:

sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

安装下载的 rpm 包:

sudo yum localinstall google-chrome-stable_current_x86_64.rpm

如果出现依赖问题,执行以下命令来解决:

sudo yum install lsb

默认安装位置:/opt/google/chrome/google-chrome,可以通过在终端中输入 google-chrome-stable 来启动 Chrome 浏览器

2. python 代码

安装 DrissionPage 包

pip install DrissionPage

实现代码如下:

# -*- coding: utf-8 -*-
""" centOS 使用 DrissionPage """
from collections import namedtuple

from DrissionPage import ChromiumPage, ChromiumOptions

Movie = namedtuple('Movie', 'name url des date')


def crawl_dy2018():
	# DrissionPage 配置
    co = ChromiumOptions()
    co.set_browser_path(r'/opt/google/chrome/google-chrome') # 设置chrome浏览器路径
    co.set_argument('--incognito')  # 隐身模式
    co.set_argument('--no-sandbox')  # 禁用沙盒模式
    co.headless() # 无头模块

	# 爬取
    movies = []
    page = ChromiumPage(co)
    page.get('https://dy2018.com/')
    items = page.eles('.co_content222')
    if items:
        for item in [items[0], items[2]]:
            for li in item.eles('tag:li'):
                a = li.ele('tag:a')
                span = li.ele('tag:span')
                movies.append(Movie(a.text, a.link, '', span.text))
    # page.quit()

    return sorted(movies, key=lambda movie: movie.date, reverse=True)

DrissionPage简介

DrissionPage 是一个基于 python 的网页自动化工具。
它既能控制浏览器,也能收发数据包,还能把两者合而为一。
可兼顾浏览器自动化的便利性和 requests 的高效率。
它功能强大,内置无数人性化设计和便捷功能。
它的语法简洁而优雅,代码量少,对新手友好。

详情及使用方法见官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/558165.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode算法训练日记 | day30

一、重新安排行程 1.题目 Leetcode:第 332 题 给你一份航线列表 tickets ,其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发…

java算法day2

螺旋矩阵搜索插入位置查找元素第一个位置和最后一个位置 螺旋矩阵 解法:模拟,核心在于你怎么转,还有就是处理边界,边界如何收缩,什么时候停止旋转。最内圈的时候怎么处理。 通过上图的模拟来解决这个问题:…

数据库锁等待排查方法、命令行安装数据库及授权文件更新

欢迎关注“数据库运维之道”公众号,一起学习数据库技术! 本期将为大家分享“数据库锁等待排查方法、命令行安装数据库及授权文件更新”的运维技能。 关键词:锁等待、V$LOCK、V$TRXWAIT、死锁、锁超时、命令行部署达梦、授权文件更新 当用户反馈执行SQL语…

1985-2022年各地级市专利申请数据

1985-2022年各地级市专利申请数据 1、时间:1985-2022年 2、指标:行政区划代码、地区、省份、城市、年份、发明公布(申请数)、其中:获得授权、外观设计申请量、实用新型申请量 3、来源:国家知识产权局 4…

【Java】简单实现图书管理系统

前言 在本篇博客当中,我们会使用Java基础语法来简单实现一个图书管理系统,主要用到的知识为:封装、多态、继承、接口等等,并不会使用数据库来存储数据,请注意 需求 1. 要求设置管理员和普通用户两种身份&#xff0c…

【深度学习实战(9)】三种保存和加载模型的方式

一、state_dict方式(推荐) torch.save(model.state_dict(), PATH)model YourModel() model.load_state_dict(torch.load(PATH)) model.eval()记住一定要使用model.eval()来固定dropout和归一化层,否则每次推理会生成不同的结果。 二、整个…

实验室三大常用仪器3---交流毫伏表的使用方法(笔记)

目录 函数信号发生器、示波器、交流毫伏表如果连接 交流毫伏表的使用方法 测量值的读数问题 实验室三大常用仪器1---示波器的基本使用方法(笔记)-CSDN博客 实验室三大常用仪器2---函数信号发生器的基本使用方法(笔记)-CSDN博客…

C#自定义窗体更换皮肤的方法:创建特殊窗体

目录 1.窗体更换皮肤 2.实例 (1)图片资源管理器Resources.Designer.cs设计 (2)Form1.Designer.cs设计 (3)Form1.cs设计 (4) 生成效果 (5)一个遗憾 1.窗…

Git常见命令行操作和IDEA图形化界面操作

设置Git用户名和标签 在安装完Git以后需要设置用户和签名,至于为什么要设置用户签名可以看一下这篇文章【学了就忘】Git基础 — 11.配置Git用户签名说明 - 简书 (jianshu.com) 基本语法: git config --global user.name 用户名 git config --global u…

SpringBoot项目创建及简单使用

目录 一.SpringBoot项目 1.1SpringBoot的介绍 1.2SpringBoot优点 二.SpringBoot项目的创建 三.注意点 一.SpringBoot项目 1.1SpringBoot的介绍 Spring是为了简化Java程序而开发的,那么SpringBoot则是为了简化Spring程序的。 Spring 框架: Spring…

ARM之栈与方法

ARM之栈与方法 计算机中的栈是一种线性表,它被限定只能在一端进行插入和删除操作(先进后出)。通常将可以插入和删除操作的一端称为栈顶,相对的一端为栈底。 通常栈有递增堆栈(向高地址方向生长)、递减堆栈…

鸿蒙OpenHarmony【搭建Ubuntu环境】

搭建Ubuntu环境 在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516…

Day37 IO流的操作

Day37 IO流的操作 文章目录 Day37 IO流的操作Java的文件拷贝利用 文件字节输出流 向文件写入数据利用 文件字节输入流 读取文件里的数据利用 带缓冲区的字节输出流 向文件写入数据利用 带有缓冲区的字节输入流 读取文件里的数据利用 字符输出转换流 向文件写入数据利用 字符输入…

Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术

Java全套智慧校园系统源码springbootelmentui Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术 智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园…

豆瓣影评信息爬取 (爬虫)

代码块: from lxml import etree import requestsheaders{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0 }url_list[] for i in range(0,5):i*20urlsf"https:…

day02-新增员工

day01 新增员工业务逻辑整理 EmployeeController.java PostMappingApiOperation("新增员工")public Result save(RequestBody EmployeeDTO employeeDTO){System.out.println("当前线程的ID:" Thread.currentThread().getId());log.info("新增员工&a…

[leetcode] 56. 合并区间

文章目录 题目描述解题方法排序java代码复杂度分析 题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区…

UWB人员定位系统适用的场景有哪些?​​​​​​​10厘米工业级实时轨迹高精度定位

UWB人员定位系统适用的场景有哪些?10厘米工业级实时轨迹高精度定位 一、应用场景 1、商场与零售领域:商场可以使用UWB人员定位系统来跟踪顾客的行踪,以收集顾客行为数据,为营销策略提供有力支持。帮助商场优化商品布局和陈列&…

在龙梦迷你电脑福珑2.0上使用Fedora 28 龙梦版

在龙梦迷你电脑福珑2.0上使用Fedora 28 龙梦版。这个版本的操作系统ISO文件是:Fedora28_for_loongson_MATE_Live_7.2.iso 。它在功能方面不错。能放音乐,能看cctv直播,有声音,能录屏,能在局域网里用PuTTY的ssh方式连接…

【Java EE】依赖注入DI详解

文章目录 🌴什么是依赖注入🍀依赖注入的三种方法🌸属性注入(Field Injection)🌸构造方法注入🌸Setter注入🌸三种注入优缺点分析 🌳Autowired存在的问题🌲解决Autowired对应多个对象问…
最新文章