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日

相关文章

  • grep-p用法

    以下是详细讲解“grep -p用法的完整攻略,过程中至少包含两条示例说明”的Markdown格式文本: grep -p用法攻略 grep是一个常用的文本搜索工具,可以在文件中查找指定的字符串。grep -p是grep的一个选项,用于指定搜索的字符串是一个Perl正则表达式。本攻略将介绍grep -p的用法,包括基本语法、常用选项和两个示例说明。 基本语法 g…

    other 2023年5月10日
    00
  • Android自定义图片选择器简单版

    下面是Android自定义图片选择器简单版的完整攻略: 1. 简介 随着移动设备的普及,越来越多的应用需要让用户上传图片。这时候,就需要一个优秀的图片选择器来让用户方便地从相册或者拍照中选择图片并进行上传。本篇攻略介绍如何自定义一个简单的图片选择器。 2. 实现步骤 2.1 添加权限 我们需要在AndroidManifest.xml文件中添加读取和写入SD卡…

    other 2023年6月25日
    00
  • 浅析Android系统中HTTPS通信的实现

    浅析Android系统中HTTPS通信的实现 介绍 HTTPS是在HTTP协议基础上加入了加密/解密机制,使得数据在传输过程中更加安全。在Android平台下,HTTPS通信的实现也是利用了该加密/解密机制来保障数据的安全传输。 本文将从以下几个方面对Android系统中HTTPS通信的实现进行详细讲解: SSL/TLS协议简介 Android中的TLS/S…

    other 2023年6月27日
    00
  • C#获取图片的后缀名解析

    C#获取图片的后缀名解析攻略 在C#中,获取图片的后缀名可以通过解析文件路径或者读取文件头信息来实现。下面是一个完整的攻略,包含两个示例说明。 方法一:解析文件路径 首先,获取图片文件的路径。可以通过用户输入、文件对话框或者其他方式获取。 使用Path类的GetExtension方法来获取文件的扩展名。该方法会返回文件路径中的扩展名部分,包括点号(.)。 c…

    other 2023年8月5日
    00
  • java动态线程池的简单实现思路

    Java动态线程池是Java中非常常用的一种多线程管理方式,可以根据实际情况灵活地维护线程池的大小和其它参数,以保证程序高效地运行。下面,我会详细讲解Java动态线程池的简单实现思路。 1. 使用线程池的好处 在传统的单线程以及诸如fork/join等方式下,我们很难进行多线程任务的管理,即无法根据任务的大小、复杂度等特点,来确定线程池中线程的数量,如果线程…

    other 2023年6月27日
    00
  • 详解Linux中的awk命令

    详解Linux中的awk命令攻略 简介 awk是一种强大的文本处理工具,广泛用于Linux系统中。它可以根据指定的规则对文本进行分析、处理和转换。本攻略将详细介绍awk命令的使用方法和示例。 基本语法 awk命令的基本语法如下: awk ‘pattern { action }’ file 其中,pattern是用于匹配文本的模式,action是在匹配成功时执…

    other 2023年8月18日
    00
  • 一篇带你了解C语言–位操作详情

    一篇带你了解C语言–位操作详情 介绍 在计算机中,二进制位(bit)是计算机内部处理数据的最小单位。C语言提供了位操作运算符和函数,用于操作和处理二进制位数据类型(int, char, short等)。 本文将带您了解C语言中的位操作,包括位运算符、位移动运算符以及位操作函数,并提供相关示例。 位运算符 按位与(&) 按位与运算符(&)比较…

    other 2023年6月27日
    00
  • JavaScript自定义鼠标右键菜单栏

    创建JavaScript自定义鼠标右键菜单栏的步骤如下: 第一步:创建一个菜单栏对象 创建一个菜单栏对象,用来存储菜单项和对应的点击事件,例如: const contextMenu = { "items": [{ "title": "复制", "action": function…

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