Linux 服务器配置使用代理 IP 的selenium 爬虫

​ 在 Linux 服务器运行爬虫有时可以取得奇效,但在 Linux 服务器环境(即无图形化界面)下配置爬虫环境、代理 IP 与常见的 Windows 环境有着较大区别。本文为对在 Linux 服务器上配置 selenium 及 Google Chrome 环境并基于代理 IP 运行爬虫的经历记录,针对一些笔者遇到的坑提供了解决方案,供读者参考。

一、基础环境

​ 操作系统:Ubuntu 20.0

​ Python:3.7

​ 代理 IP:Clash(关于在 Linux 环境配置 Clash 的操作可见文章Linux服务器基于代理IP的爬虫_西南小游侠的博客-CSDN博客)

二、安装并使用 Google Chrome

​ 首先需要在 Root 账户下,直接从 Chrome 官网下载并安装 Chrome:

sudo apt-get install libxss1 libappindicator1 libindicator7
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb
sudo apt-get install -f

​ 安装完成后,需要修改配置文件使其能够在 Root 权限下运行。打开 /opt/google/chrome/google-chrome 文件,找到命令:

exec -a "$0" "$HERE/chrome" "$@"

​ 在其末尾添加命令成为:

exec -a "$0" "$HERE/chrome" "$@" --user-data-dir --no-sandbox

​ 接着基于以下命令测试是否可以使用 Chrome:

google-chrome --headless --remote-debugging-port=9222 https://chromium.org --disable-gpu

​ 输出网页内容即可。

​ 接下来需要通过修改部分文件权限保证在非 Root 账户可以使用 Chrome。

​ 登录到一个非 Root 账户,测试上述命令,发现其报错:

​ 该错误是因为启动 Chrome 需要修改 /tmp/Crashpad 文件夹,但该账户没有权限修改该文件夹。解决方法为将 /tmp/Crashpad 文件夹的权限修改,在 Root 账户输入:

chmod -R 777 /tmp/Crashpad

​ 在运行 Chrome,发现报错:

​ 同理,修改文件夹权限,此处直接将 /opt 文件夹权限开放:

chmod -R 777 /opt

​ 再运行 Chrome,发现可以成功运行了。

三、安装并使用 selenium

​ 首先,需要安装和你所安装的 Chrome 版本一致的 webdriver,首先查看 Chrome 版本:

google-chrome --version

​ 接着,根据 Chrome 版本号,从网站 CNPM Binaries Mirror (npmmirror.com) 下载对应版本的 webdriver 并解压到一个自定义目录即可。

​ 接下来需要安装 Python 第三方库 selenium,直接通过 conda 安装即可:

conda install selenium

​ 然后就可以在代码中运行基于 selenium 的爬虫了,提供一个代码示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionswd = webdriver.Chrome(executable_path='path_for_webdriver')wd.get("https://www.baidu.com")
content = wd.page_source
url = wd.current_url
print(url)
print(content)wd.quit()

​ 但是,直接运行该代码会报错:

​ 该错误是比较常见的,通过在网上查询可知,是需要添加启动参数,但不同的系统可能需要不同的参数才能启动,有的仅需要1~3个,笔者的系统需要以下5个参数都添加才可以启动:

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("--remote-debugging-port=9222")

​ 添加这些参数后,即可成功运行,完整代码示例如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument('--headless')
# 使用无头模式,无 GUI的Linux服务器必须添加
chrome_options.add_argument('--disable-gpu')
# 不使用GPU,有的机器不支持GPU
chrome_options.add_argument('--no-sandbox')
# 运行 Chrome 的必需参数
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("--remote-debugging-port=9222")
# 以上两个参数具体作用不明,但笔者机器需要这两个参数才能运行
chrome_options.add_argument("user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'")
# 该参数用于避免被认出,非必需参数
wd = webdriver.Chrome(chrome_options=chrome_options,executable_path='path_for_webdriver')wd.get("https://www.baidu.com")content = wd.page_source
url = wd.current_url
print(url)
print(content)wd.quit()

四、使用代理 IP 的 selenium 爬虫

​ 在上一篇文章中,我们已经配置好了基于 Clash 的代理 IP,接下来直接向爬虫代码中添加部分即可:

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("--remote-debugging-port=9222")
chrome_options.add_argument('--proxy-server=http://127.0.0.1:7890')
# 添加部分,使用代理IP
chrome_options.add_argument("user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'")
wd = webdriver.Chrome(chrome_options=chrome_options,executable_path='path_for_webdriver')
try:wd.get("https://www.google.com")content = wd.page_sourceurl = wd.current_urlprint(url)print(content)
finally:wd.quit()

​ 接下来运行即可成功访问 Google。

Linux 服务器配置selenium 爬虫相关推荐

  1. Python爬虫(10)selenium爬虫后数据,存入csv、txt并将存入数据并对数据进行查询

    之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Py ...

  2. Python爬虫(9)selenium爬虫后数据,存入mongodb实现增删改查

    之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Py ...

  3. Crawlab运行selenium爬虫

    上篇文章学习了Crawlab运行scrapy爬虫和单文件爬虫,这次学习Crawlab运行selenium爬虫,我的例子是单文件的. 环境准备 Crawlab虽然自带了一些爬虫用的第三方库,但是不全,总 ...

  4. Selenium爬虫实践:ajax请求抓包、浏览器退出

    Selenium爬虫实践:ajax请求抓包.浏览器退出 2022-04-07 16:00·软件测试木木 前言 最近在搞公司内部系统,累的一批,需要从另一个内部系统导出数据存到数据库做分析,有大量的数据 ...

  5. 用Selenium 爬虫下载文件,解除Chrome 下载警告 (Keep or Discard),设置下载目录的方法

    写在前面的话 我们的描述,运用都是基于Ubuntu 的运行环境 Chrome : Version 77.0.3865.90 (Official Build) (64-bit) OS : Ubuntu ...

  6. __init__在python中的用法知乎_python使用selenium爬虫知乎的方法示例

    说起爬虫一般想到的情况是,使用 python 中都通过 requests 库获取网页内容,然后通过 beautifulSoup 进行筛选文档中的标签和内容.但是这样有个问题就是,容易被反扒机制所拦住. ...

  7. 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法

    在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 参考文章: (1)在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 (2)https://www.cnbl ...

  8. 关于Linux服务器配置java环境遇到的问题

    关于Linux服务器配置java环境遇到的问题 将下载好的JDK安装包解压到/etc/local/路径下,安装完后用vim/etc/profile文件,在文件末尾添加 export JAVA_HOME ...

  9. linux可配置哪些服务,不可不知 十大热门Linux服务器配置

    热门的Linux操作系统具备诸多良好特性,它使企业既能节省在软件许可上的开支,又能缩减维护成本.但是面对众多的Linux操作系统,企业如何根据服务器配置选择适合的操作系统?根据产品使用的便捷性.商业支 ...

最新文章

  1. SpringBoot 2.0 多图片上传加回显
  2. 4名矿工控制50%算力 去中心化是不是谎言?
  3. laravel 邮件SwiftMailer
  4. 数据库课设(足球联赛管理系统)
  5. C++描述杭电OJ 2015.偶数求和 ||
  6. mongdb集群3.4 shard 模式
  7. Magento: 左栏筛选条件 Select Box / Button / Dropdown List on Layered Navigation
  8. Robots.txt 协议——百度之星
  9. Intel Core Enhanced Core架构/微架构/流水线 (1) - 特性概述
  10. 关于new 和delete的灾祸
  11. pyhton链式赋值在可变类型/不可变类型上的区别以及其本质
  12. DataGrid与GridView中删除前提示框与编辑框长度设置的实现(ASP.NET)
  13. [转载] 10 个最值得 Python 新人练手的有趣项目
  14. 团队开发——冲刺1.e
  15. Activity-GalleryView
  16. Eclipse rap 开发经验总结
  17. h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型
  18. nginx修改响应头(可屏蔽后端服务器的信息:IIS,PHP等)
  19. 免费在线思维导图网站,这么好用一定要收藏
  20. 2022年武汉江岸区助企惠企政策汇总,附奖励补贴标准及申报条件

热门文章

  1. 开局就要做电视的未来 荣耀智慧屏究竟能否重构电视生态?
  2. 宇视服务器常用linux命令
  3. ixgbe网卡驱动 Ⅲ----收发队列资源分配
  4. Spring Boot 中密码加密的两种姿势!
  5. html 如何打开字幕,HTML5视频隐藏字幕关闭或开启方法
  6. 网吧服务器中病毒重装系统后还会有病毒存在吗,电脑中毒了,重装系统后,病毒还会在电脑中吗...
  7. iphone11 android,iPhone 11系列与近期的Android旗舰相比,谁更略胜一筹?
  8. GO语言-第一节-初识Go语言
  9. 求最大公约数与最小公倍数 (辗转相除法+更相减损法+Stein算法)
  10. C语言常用函数/标准工具函数库/数学函数库