本文主要是介绍无界面 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 namedtuplefrom DrissionPage import ChromiumPage, ChromiumOptionsMovie = 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 的高效率。
它功能强大,内置无数人性化设计和便捷功能。
它的语法简洁而优雅,代码量少,对新手友好。
详情及使用方法见官网
这篇关于无界面 centOS 中使用 DrissionPage的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!