Linux系统下安装Python爬虫环境+模拟浏览器插件

2023-10-30

一、服务器版本

       Centos7以上版本

二、配置python环境

1、安装依赖包

yum -y install gcc gcc-c++
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel

2、下载anaconda

       下载anaconda安装包命令如下:

$ wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.0.1-Linux-x86_64.sh

       安装过程可参考:https://blog.csdn.net/zhaoyoulin2016/article/details/80776198

  • 首先通过xftp将下载好的Anaconda3_linux源文件放到/usr/local文件夹内;
  • cd /usr/local  执行如下代码:bash  Anaconda3-5.2.0-Linux-x86_64.sh
  • 根据提示输入ENTER

如果报错如下:

Anaconda3安装过程中遇到“Anaconda3-5.1.0-Linux-x86_64.sh:行350: bunzip2: 未找到命令 tar: 它似乎不像是一个 tar 归档文件 tar: 由于前次错误,将以上次的错误状态退出”

Anaconda3-5.1.0-Linux-x86_64.sh:行350: bunzip2: 未找到命令 tar: 它似乎不像是一个 tar 归档文件 tar: 由于前次错误,将以上次的错误状态退出

解决办法:

安装bzip2即可解决

yum install -y bzip2

  • 输入yes
  • 安装完后增加环境变量

vim /root/.bashrc

# added by Anaconda3 4.4.0 installer

export PATH="/root/anaconda3/bin:$PATH"

  • 重启环境变量配置

source /root/.bashrc

  • 安装完成之后,命令行输入python,查看python版本是否是3.6,如果是则安装成功。如下。

3、安装所需要的python包

       涉及到如下的python库:

环境

版本

Python

Python3.6     版本

re

Python自带(2.2.1)

time

Python自带

warnings

Python自带

psycopg2

2.7.7

requests

2.18.4

pandas

0.23.4

BeautifulSoup

4.6.3

impala

0.14.1

python-LevenshteinLevenshtein

0.12.0

selenium

3.141.0

zhconv

 

3.1、首先安装python库

       使用pip安装。

pip install --upgrade pip
pip install beautifulsoup4
pip install selenium
pip install psycopg2
pip install requests
pip install pandas
pip install Levenshtein
pip install zhconv

       导入安装的python库,并测试psycopg2是否可以连接数据库,使用本地的一个数据库进行测试。测试代码如下。

import requests
import re
import pandas as pd
from bs4 import BeautifulSoup
import selenium
import psycopg2
import Levenshtein
import zhconv
conn = psycopg2.connect(database="zjsm", user="postgres", password="root", host="192.168.0.12", port="5432")

3.2impala的安装

       由于本项目的数据需要与hive数据库连接,故安装impala库。先下载所需的安装包。

pip install pure_sasl==0.5.1
pip install thrift==0.9.3
pip install bitarray==0.8.3
pip install thrift_sasl==0.2.1
pip install thriftpy==0.3.9
pip install impyla==0.14.1

       若出现问题,可参考https://blog.csdn.net/wx0628/article/details/86550582

       测试是否安装成功,可以尝试连接一个本地的hive。测试代码如下。

from impala.dbapi import connect
from impala.util import as_pandas
conn = connect(host='192.168.111.87', port=10000, auth_mechanism='PLAIN', user='root', password='3.1415926', database='zjsm')

3.3、谷歌浏览器以及对应的驱动安装:chromedriver.exe

       安装谷歌浏览器,这里使用文件夹里提供的版本google-chrome-stable_current_x86_64.rpm,只需要将该软件包上传到服务器然后使用如下命令安装:yum localinstall google-chrome-stable_current_x86_64.rpm。

       将文件夹里提供的chromedriver上传到服务器,可以放到用户目录下,比如/root/anaconda3目录,然后设置权限,输入命令:chmod 777 chromedriver。

       可以将search_url,即https://so.youku.com/search_video/q_少帅放到浏览器搜索,查看是不是少帅,然后将代码最终输出的https://list.youku.com/show/id_z2a6634cea23d11e5b692.html连接使用浏览器测试是不是期望的结果。测试代码如下。

from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path="/root/chromedriver",chrome_options=options)
search_url='https://so.youku.com/search_video/q_少帅'
driver.get(search_url)
html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
url=soup.select('.row-ellipsis a')[0].get('href')
print(url)#得到:https://list.youku.com/show/id_z2a6634cea23d11e5b692.html

 

文章未经博主同意,禁止转载!

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统下安装Python爬虫环境+模拟浏览器插件 的相关文章

  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • 如何以“正确”的方式处理带有空字节的 Python unicode 字符串?

    Question PyWin32 似乎很乐意将 null 终止的 unicode 字符串作为返回值 我想以 正确 的方式处理这些字符串 假设我得到一个像这样的字符串 u C Users Guest MyFile asy x00 x00sy
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 在系统托盘中隐藏 tkinter 窗口 [重复]

    这个问题在这里已经有答案了 我正在制作一个程序来提醒我朋友的生日 这样我就不会忘记祝福他们 为此 我制作了两个 tkinter 窗口 1 First one is for entering name and birth date 2 Sec
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这

随机推荐

  • JavaSE复习:集合

    一方面 面向对象语言对事物的体现都是以对象的形式 为了方便对多个对象的操作 就要对对象进行存储 另一方面 使用Array存储对象方面具有一些弊端 而Java 集合就像一种容器 可以动态地把多个对象的引用放入容器中 集合与数组的比较 首先说下
  • Web3.0是什么?带你解析Web3.0

    有人还在研究什么是元宇宙和NFT 那个概念已经过时了 据说现在流行的是Web3 0和DAO 如果你只想了解关于Web3 0的观点 那么先简明扼要的告诉你 Web3 0是未来 但就2022年人类科技水平的发展来看 你目前接触到的 向你兜售通过
  • Ubuntu最大连接数

    使用ulimit n查看连接数或ulimit a查看详细信息 1 配置 etc security limits conf sudo vim etc security limits conf 文件尾追加 hard nofile 40960 s
  • pagehelper源码分析

    pagehelper不用说 只要是用过的就会爱上他 Maven依赖
  • 最大降雨量

    import os import sys 请在此输入您的代码 第四周的降雨量最大 1 2 3 46 47 48 49 4 5 6 42 43 44 45 7 8 9 38 39 40 41 10 11 12 34 35 36 37 13 1
  • C#与C++数据类型对应表

    C 调用DLL文件时参数对应表 Wtypes h 中的非托管类型 非托管 C 语言类型 托管类名 说明 HANDLE void System IntPtr 32 位 BYTE unsigned char System Byte 8 位 SH
  • Shopify开发入门-前端保姆级教程

    Shopify开发入门 前端保姆级教程 本文旨在介绍Shopify开发入门 环境 配置等 帮助开发者配置环境 了解各个开发模式的区别及用途 已有Shopify开发经验者可退出 以免浪费你的宝贵时间 本文5k字 图片 链接 代码块较多 请耐心
  • OSPF的防环机制

    文章目录 域间防环 域内防环 有向图转化 有向图的画法 示例 SPF算法 OSPF将整个OSPF域划分为多个区域 区域内部通过拓扑信息计算路由 区域间传递路由信息 实现全网可达 OSPF防环机制主要是体现在域内防环和域间防环 域间防环 OS
  • 并发锁分析

    锁 为什么加锁 并发会造成数据混乱 事务 原子性a 一致性c 隔离性i 持久性d 加锁的影响和优化点 线程切换的开销 缓存命中率 加锁失败会进行线程切换 用户态和内核态的切换开销 栈的切换 寄存器切换 synchronized重量锁的实现是
  • 管螺纹如何标注_螺纹基础知识,搞机械的必须懂这些

    螺纹是零件上常见的一种结构 它被广泛地用于零件之间的连接 也可以起传递运动和动力的作用 主要介绍国家标准对螺纹的结构 尺寸 画法和标注的规定 一 螺纹种类 按牙型可分为三角形 梯形 矩形 锯齿形和圆弧螺纹 按螺纹旋向可分为左旋和右旋 按螺旋
  • 基于CEEMDAN集合经验模态分解算法Python程序

    基于CEEMDAN集合经验模态分解算法Python程序 可用于时间序列和其他领域 特色 1 基于Python 2 数据从excel文件中读取 更换简单 全部完整的代码 保证可以运行的代码看这里 http t csdn cn obJlChtt
  • springboot整合quartz项目使用(含完整代码)

    前言 quartz是一个定时调度的框架 就目前市场上来说 其实有比quartz更优秀的一些定时调度框架 不但性能比quartz好 学习成本更低 而且还提供可视化操作定时任务 例如xxl Job elastic Job这两个算是目前工作中使用
  • 高并发情况下修改系统参数

    单进程最大打开文件数限制 一般的发行版 限制单进程最大可以打开1024个文件 这是远远不能满足高并发需求的 调整过程如下 在 号提示符下敲入 ulimit n 65535 限制修改失败了 会显示 Operationnotpermitted
  • pandas DataFrame数据转为list

    首先使用np array 函数把DataFrame转化为np ndarray 再利用tolist 函数把np ndarray 转为list 示例代码如下 coding utf 8 import numpy as np import pand
  • 仪表识别之数字表识别

    转自 https blog csdn net huneng1991 article details 82049207 这篇文章讲述了仪表上的数字表的识别 看图片效果还是挺好的 这里记录一下备用 2 识别检测方法 这篇文章主要用的方法是机器学
  • “猜数字“游戏,系统随机生成一个[1,100]的数字,由用户输入数字后,计算机提示输入数字“偏大”、“偏小”,并记录猜数次数

    import java util Scanner public class Demo public static void main String args TODO Auto generated method stub Scanner i
  • [C语言]分支语句:if语句、switch语句

    分支语句也称为选择结构 条件判断语句 顾名思义 要么选择A 要么选择B 或选择其他的一种结构 在c语言中 常见的分支语句分别有 if语句和switch语句 目录 1 if语句 1 1if语句的结构 1 2if语句的注意点 2 switch语
  • 【MATLAB】rem和mod函数的区别

    求整数x y的余数 rem x y 求模 mod x y 如果x和y的符号相同 同为 同为 那么rem x y mod x y 正数与正数 负数与负数 取整结果两个函数效果一样 如果x和y的符号相反 那么mod x y rem x y y
  • 存储过程的概念,函数与存储过程的区别

    存储过程 为了完成特定功能的sql语句集进行编译优化后 存储在数据库服务器中 用户通过指定存储过程的名字来调用执行 区别 本质上没有区别 1 存储过程作为一个独立部分 函数可以作为查询语句的一个部分 2 存储过程功能较为复杂 函数功能针对性
  • Linux系统下安装Python爬虫环境+模拟浏览器插件

    一 服务器版本 Centos7以上版本 二 配置python环境 1 安装依赖包 yum y install gcc gcc c yum y install zlib zlib devel yum y install bzip2 bzip2