无界面 centOS 中使用 DrissionPage

无界面 centOS 中使用 DrissionPage

    • [1. centos 安装 chrome](#1. centos 安装 chrome)
    • [2. python 代码](#2. python 代码)
    • DrissionPage简介

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

需要解决两个事情:

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

1. centos 安装 chrome

添加 Chrome 的 Yum Repository:

sh 复制代码
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

安装下载的 rpm 包:

sh 复制代码
sudo yum localinstall google-chrome-stable_current_x86_64.rpm

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

sh 复制代码
sudo yum install lsb

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

2. python 代码

安装 DrissionPage 包

sh 复制代码
pip install DrissionPage

实现代码如下:

python 复制代码
# -*- coding: utf-8 -*-
""" centOS 使用 DrissionPage """
from collections import namedtuple

from DrissionPage import ChromiumPage, ChromiumOptions

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


def crawl_dy2018():
	# 在 centOS 中使用无头模式的配置
    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 的高效率。

它功能强大,内置无数人性化设计和便捷功能。

它的语法简洁而优雅,代码量少,对新手友好。

详情及使用方法见官网

相关推荐
witAI7 分钟前
**Kimi小说灵感2025推荐,从零到一的创意激发指南**
人工智能·python
飞Link24 分钟前
深度解析:基于专家的监管方法(Expert-Based Supervision)在复杂系统中的应用
python·数据挖掘·回归
Shining059627 分钟前
Triton & 九齿系列《Triton 练气术》
开发语言·人工智能·python·学习·其他·infinitensor
天远Date Lab32 分钟前
天远企业司法认证API实战:Python构建企业级供应链合规审查防火墙
大数据·开发语言·网络·python
进击的雷神1 小时前
ID隐式传参、多页面字段分散、数据强制覆盖、无分页列表解析——巴西展会爬虫四大技术难关攻克纪实
服务器·网络·爬虫·python
七夜zippoe1 小时前
[特殊字符] Python日志系统革命:Loguru结构化日志与ELK Stack集中管理实战指南
大数据·python·elk·loguru·logstash
喵手1 小时前
Python爬虫实战:监控贝壳找房小区均价与挂牌增量!
爬虫·python·爬虫实战·零基础python爬虫教学·采集贝壳找房小区均价数据·挂牌增量·贝壳
WJSKad12352 小时前
如何评价ControlNet v1.1的InPaint版本?[特殊字符]
python
xuansec2 小时前
【JavaEE安全】JNDI 注入从原理到实战:RMI、LDAP 与高版本绕过
python·安全·java-ee
进击的雷神2 小时前
前端路由动态渲染、JSON内嵌HTML清洗、展位信息数组化、分页参数固定化——尼日利亚展会爬虫四大技术难关攻克纪实
前端·爬虫·python·json