从零到爬取:在Linux服务器(CentOS 7)上用Anaconda部署你的第一个Scrapy爬虫
从零到爬取在Linux服务器CentOS 7上用Anaconda部署你的第一个Scrapy爬虫当你第一次通过SSH连接到一台全新的CentOS 7服务器时面对那个闪烁的光标可能会感到一丝茫然。不同于Windows的图形界面Linux服务器环境要求我们完全通过命令行来构建Python爬虫开发环境。这正是本文要解决的问题——我将带你从零开始在无图形界面的CentOS 7服务器上使用Anaconda搭建一个稳定、隔离的Python环境并部署你的第一个Scrapy爬虫项目。1. 服务器环境准备在开始安装之前我们需要确保服务器环境满足基本要求。CentOS 7默认安装了Python 2.7但我们需要的是Python 3环境。首先检查系统版本和现有Python安装cat /etc/redhat-release # 确认CentOS 7系统 python --version # 查看默认Python版本如果系统没有安装wget工具用于下载Anaconda安装脚本需要先安装基础工具链sudo yum install -y wget bzip2 gcc make重要提示在生产环境中建议创建一个专用用户来运行爬虫避免使用root账户操作sudo adduser spideruser sudo passwd spideruser sudo usermod -aG wheel spideruser # 添加sudo权限 su - spideruser # 切换到新用户2. Anaconda的安装与配置2.1 下载与安装Anaconda在用户主目录下我们下载最新版的Anaconda安装脚本。截至本文撰写时最新版本为Anaconda3-2024.10wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh下载完成后验证文件完整性可选但推荐sha256sum Anaconda3-2024.10-1-Linux-x86_64.sh运行安装脚本并按照提示操作bash Anaconda3-2024.10-1-Linux-x86_64.sh安装过程中需要注意几个关键点按Enter阅读许可协议输入yes接受许可条款确认安装路径默认为~/anaconda3最后一步询问是否初始化conda时选择yes安装完成后激活conda环境source ~/.bashrc验证安装是否成功conda --version python --version2.2 管理conda环境默认情况下Anaconda会在登录时自动激活base环境。对于服务器环境我们可能希望手动控制# 禁用自动激活base环境 conda config --set auto_activate_base false # 手动激活base环境 conda activate base # 退出当前环境 conda deactivate对于爬虫项目最佳实践是创建独立的环境conda create -n spider_env python3.9 conda activate spider_env3. 安装Scrapy及相关依赖在激活的conda环境中无论是base还是自定义环境使用conda-forge频道安装Scrapyconda install -c conda-forge scrapy安装完成后验证scrapy versionScrapy运行还需要一些额外的依赖库建议一并安装conda install -c conda-forge service_identity pyopenssl cryptography如果遇到SSL相关问题可能需要更新系统证书sudo yum install -y ca-certificates4. 创建并运行Scrapy项目4.1 项目结构与初始化选择一个合适的目录存放爬虫项目。建议遵循Linux文件系统层次结构标准mkdir -p ~/projects/scrapy_projects cd ~/projects/scrapy_projects创建新的Scrapy项目scrapy startproject myfirstspider cd myfirstspider项目目录结构如下myfirstspider/ ├── scrapy.cfg # 部署配置文件 └── myfirstspider/ # 项目Python模块 ├── __init__.py ├── items.py # 数据模型定义 ├── middlewares.py # 中间件配置 ├── pipelines.py # 数据处理管道 ├── settings.py # 项目设置 └── spiders/ # 爬虫代码目录 └── __init__.py4.2 创建第一个爬虫生成一个示例爬虫scrapy genspider example example.com这会在spiders目录下创建example.py文件。打开并编辑这个文件import scrapy class ExampleSpider(scrapy.Spider): name example allowed_domains [example.com] start_urls [http://example.com/] def parse(self, response): self.logger.info(Visited %s, response.url) yield { url: response.url, title: response.css(title::text).get() }4.3 运行爬虫在项目根目录下运行爬虫scrapy crawl example要保存爬取结果到JSON文件scrapy crawl example -o results.json5. 服务器环境下的高级配置5.1 后台运行与日志管理在服务器环境中我们通常需要让爬虫在后台运行nohup scrapy crawl example spider.log 21 这会将爬虫放入后台运行输出重定向到spider.log文件。要监控运行状态tail -f spider.log # 实时查看日志 jobs # 查看后台任务 fg %1 # 将任务带回前台5.2 定时任务配置使用crontab设置定时爬取crontab -e添加以下内容每天凌晨2点运行0 2 * * * /home/spideruser/anaconda3/envs/spider_env/bin/scrapy crawl example -o /home/spideruser/projects/scrapy_projects/results_$(date \%Y\%m\%d).json5.3 性能优化设置编辑settings.py文件调整爬虫性能参数CONCURRENT_REQUESTS 16 # 并发请求数 DOWNLOAD_DELAY 0.25 # 下载延迟(秒) CONCURRENT_REQUESTS_PER_DOMAIN 8 # 每个域名的并发请求数 AUTOTHROTTLE_ENABLED True # 自动限速6. 常见问题排查问题1SSL证书验证失败[scrapy.core.downloader.handlers] ERROR: Download error on GET https://example.com: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)解决方案# 在settings.py中添加 DOWNLOADER_CLIENT_TLS_METHOD TLSv1.2或者临时禁用证书验证不推荐生产环境使用# 在爬虫代码中添加 custom_settings { DOWNLOADER_CLIENT_TLS_METHOD: TLSv1.2, VERIFY_SSL: False }问题2内存不足在服务器上运行大型爬虫可能导致内存不足。可以限制Scrapy的内存使用# settings.py MEMUSAGE_ENABLED True MEMUSAGE_LIMIT_MB 1024 # 限制为1GB问题3数据库连接问题如果需要将数据存储到数据库确保安装了正确的驱动conda install -c conda-forge pymongo mysqlclient psycopg2
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2505348.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!