scrapy在python爬虫中搭建出错的解决方法

当使用scrapy搭建python爬虫时,可能会出现一些常见的错误,如无法安装、错误的依赖关系、配置错误等。下面将介绍一些常见的出错原因和解决方法。

1. 安装错误

在安装scrapy时,可能会出现各种各样的错误。下面列举了一些常见的错误和解决方法:

  • 安装失败或者长时间没反应:使用pip安装scrapy时,由于网络问题或者其他原因,可能会出现安装失败的情况。可以尝试使用清华等国内的pip镜像源进行安装,例如:
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 安装时缺少依赖库:在安装scrapy时,可能会出现依赖库缺失的情况。可以使用系统包管理器进行安装,例如:
sudo apt-get install libxml2-dev libxslt1-dev python-dev

2. 配置错误

scrapy的配置文件是settings.py,错误的配置会导致scrapy运行失败。下面列举了一些常见的错误和解决方法:

  • User-Agent被禁止:在爬取网站时,如果使用了UA被封禁的User-Agent,可能无法正常运行。可以在settings.py中配置User-Agent池来解决这个问题,例如:
USER_AGENTS = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6',
]

DOWNLOADER_MIDDLEWARES = {
        'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
        'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': None,
        'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
        'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 500,
        'myproxy.middlewares.RandomUserAgentMiddleware': 543, #中间件设置
    }
  • 导入模块错误:在scrapy的Spider中,可能会出现导入自定义模块错误的情况。可以检查路径和模块名是否正确。
from myspider.items import MyspiderItem

示例说明

  1. 安装失败:
$ pip install scrapy
Collecting scrapy
  Downloading https://files.pythonhosted.org/packages/32/b1/1aebbbb596bd15d4ff69da8aa18986a5d0b18f1eac8239e5ef87f185d2cc/Scrapy-2.0.1-py2.py3-none-any.whl (248kB)
    100% |████████████████████████████████| 256kB 587kB/s
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3.6 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-x5glm7eg/psycopg2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-x5glm7eg/psycopg2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' build_ext -I/usr/local/pgsql/include
         cwd: /tmp/pip-install-x5glm7eg/psycopg2/
    Complete output (22 lines):
    running build_ext
    building 'psycopg2._psycopg' extension
    creating build/temp.linux-x86_64-3.6
    creating build/temp.linux-x86_64-3.6/psycopg
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION=2.8.5 (dt dec pq3 ext lo64) -DPG_VERSION_NUM=120005 -DHAVE_LO64=1 -I/usr/local/pgsql/include -I/usr/local/include/python3.6m -I/home/jx/demo/env/include/python3.6m -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.6/psycopg/psycopgmodule.o -Wdeclaration-after-statement

解决方法:使用国内清华镜像安装

$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy
  1. 配置错误:
#将这个中间件激活并设为50,数字会影响优先级,数字越小处理优先级越高
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.middleware.SplashCookiesMiddleware': 723,
    'scrapy_splash.middleware.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
    'myproject.middlewares.RandomUserAgentMiddleware': 543,
}
#splash配置
SPLASH_URL = 'http://127.0.0.1:8050'

解决方法:检查配置,确保所有依赖库都正确安装,并且检查相应的变量名、参数名是否有误。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:scrapy在python爬虫中搭建出错的解决方法 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • npm卸载及安装流程

    npm卸载及安装流程 npm是Node.js的包管理器,可以方便地安装、卸载和管理Node.js模块。本攻略将介绍的卸载及安装流程,并提供两个示例如下。 卸载npm 如果需要卸载npm,可以使用以下命令: npm uninstall npm -g 这个命令会卸载全局安装的npm包。如果需要卸载本地安装的npm包,可以在项目目录下执行以下命令: npm uni…

    other 2023年5月7日
    00
  • java利用递归实现类别树示例代码

    首先我们先来讲解一下递归的概念和原理。 递归的概念和原理 递归是一种解决问题的方法,它把一个大问题逐渐分解成小问题来解决,直到小问题可以被轻松地解决。在编程中,递归是一种函数调用自身的过程。递归函数在调用过程中会不断地调用自身,直到达到终止条件为止。 使用递归实现类别树,是可以节省资源的一种做法。通常情况下,我们需要查询某个分类的所有子分类和子分类的子分类,…

    other 2023年6月27日
    00
  • Android Binder进程间通信工具AIDL使用示例深入分析

    Android Binder进程间通信是Android系统中非常重要的一部分,AIDL是Android Interface Definition Language的缩写,是用来描述服务器进程和客户端进程之间通信接口的一种语言。本文将详细讲解如何使用AIDL实现进程间通信,并提供两个示例说明供读者参考。 一、AIDL概述 AIDL是Android系统中基于Bi…

    other 2023年6月27日
    00
  • 爱思助手3.65版本出现应用程序正常初始化失败的问题

    问题现象描述: 用户在打开爱思助手3.65版本时出现应用程序正常初始化失败的问题,导致无法正常使用软件。 解决步骤: 步骤一:卸载老版本爱思助手 打开电脑的“控制面板”; 选择“程序”; 找到并选择爱思助手; 点击“卸载”; 按照提示完成卸载过程。 步骤二:下载并安装较新版本的爱思助手 打开有关网站:http://www.i4.cn; 点击网页上方“IE浏览…

    other 2023年6月20日
    00
  • python通过scapy编写arp扫描器

    Python通过Scapy编写ARP扫描器 网络扫描是网络安全常规操作之一。在这个过程中,我们需要探测可能存在的安全漏洞。ARP(地址解析协议)扫描是一种简单而又常用的扫描方式。ARP协议用于将MAC地址与IP地址相互关联,ARP扫描器通过检测目标网络上的主机所使用的IP地址和MAC地址之间的关系,可以快速地识别活跃的主机。 在这篇文章中,我们将介绍如何使用…

    其他 2023年3月28日
    00
  • vmware共享文件夹后mnt没有目录

    vmware共享文件夹后mnt没有目录 问题描述 使用vmware虚拟机,在Host和Guest系统之间共享文件夹时,如果没有按照正确的步骤进行设置,可能会出现共享文件夹之后,Guest系统的/mnt目录下没有相应的目录的情况。 解决方法 方法一:检查mount点 首先,在Guest系统中,确认已经安装了open-vm-tools,并且vmware的共享文件…

    其他 2023年3月28日
    00
  • Python的条件语句与运算符优先级详解

    Python是一门非常流行的编程语言,其中条件语句与运算符优先级是编写Python程序的重要组成部分。本文将为读者详细介绍Python中条件语句与运算符优先级的相关知识。 一、条件语句 在Python中,条件语句用于基于不同的条件执行不同的代码块。其中最常见的条件语句是if语句。if语句通常有一个布尔表达式作为条件,如果这个表达式的结果为True,则执行if…

    other 2023年6月27日
    00
  • 关于python:pipinstall-u中的”-u”选项代表什么

    下面是关于“关于python:pip install -u中的”-u”选项代表什么”的完整攻略: 1. 什么是pip install -u? pip install -u是pip install命令的选项,用于升级已安装的Python包。使用该选项时,pip会检查已安装的包的版本,并将其升级到最新版本。 2. 如何使用pip install -u? 使用pi…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部