1. curl启动爬虫没有反应:(查看控制台日志ERROR)
raise NotImplementedError(
builtins.NotImplementedError: spawnProcess not available since pywin32 is not installed.
解决办法:
win系统下需要执行命令 pip install pywin32,然后重启scrapyd即可
2. 启动爬虫报错:
curl http://localhost:6800/schedule.json -d project=sjkb_spider -d spider=sjkbSpider
Invoke-WebRequest : 无法绑定参数,因为参数“d”被指定了多次。
若要为可以接受多个值的参数提供多个值,请使用数组语法。例如 "-parameter value1,value2,value3"。
解决:
有一个名为 Invoke-WebRequest 的 CmdLet,其别名为 curl。
因此,当您执行此命令时,它会尝试使用 Invoke-WebRequest,而不是使用 curl。删除此别名允许您按预期执行 curl。
`curl`实际上只是一个别名[`Invoke-WebRequest`]
键入命令查看: Get-Command curl
Windows Terminal 似乎默认设置了 Invoke-WebRequest,所以我偶尔会发现自己需要运行 remove-it
直接在powershell中执行删除别名命令再去curl
方法一:
Remove-item alias:curl
方法二:(推荐)
curl.exe
3. 爬虫执行错误
scrapy crawl spider-name
PermissionError: [Errno 13] Permission denied: '爬虫-视界快报.xlsx'
解决:
当前excel在其他地方(wps)被打开了,关闭就是
4.安装(pip install xxx)插件错误
pip._vendor.urllib3.exceptions.ReadTimeoutError:
HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
网络问题:切换镜像源:
豆瓣:http://pypi.douban.com/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
山东理工大学:http://pypi.sdutlinux.org/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学:http://pypi.hustunique.com/
安装命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywin32
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
5. linux服务器pip install报警告 /scrapyd运行后提示(运行在root下,建议创建虚拟环境)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
5.(1).通过find命令查找pip安装位置: : find / -name pip-*
cd到pip的安装目录:cd /usr/bin
5.(2).创建虚拟环境 激活虚拟环境
python3 -m venv xmt-env
5.(3). 激活 (退出:ctrl + d)
Windows下:
xmt-env\Scripts\activate.bat
Linux
source xmt-env/bin/activate
cd /xmtSpider/scdserver
6. 安装python,make install后提示:(需要将pip添加到PATH中)
WARNING: The scripts pip3 and pip3.11 are installed in '/usr/local/python3/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
参见上面软链接操作(python全家桶)
Successfully installed pip-23.1.2 setuptools-65.5.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
参见创建虚拟环境(python全家桶)
7. pip install的时候提示ssl不可用
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
翻看安装日志:发现版本过低
Could not build the ssl module!
Python requires a OpenSSL 1.1.1 or newer
Custom linker flags may require --with-openssl-rpath=auto
查看openssl版本 openssl version
显示:OpenSSL 1.0.2k-fips 26 Jan 2017
【openssl安装】
建立软链接:
# 删除
rm -rf /usr/include/openssl #先移除,不然会提示“链接已存在”
rm -rf /usr/local/lib64/libssl.so
rm -rf /usr/bin/openssl
ln -s /usr/local/openssl111/include/openssl /usr/include/openssl
ln -s /usr/local/openssl111/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
ln -s /usr/local/openssl111/bin/openssl /usr/bin/openssl
查看openssl版本 openssl version
显示:OpenSSL 1.1.1a 20 Nov 2018
这时候命令 yum install openssl
竟然提示的是:已经是最新版本:
软件包 1:openssl-1.0.2k-26.el7_9.x86_64 已安装并且是最新版本
离了大普,上面明明version出来是1.1.1了
重新编制还是 Python requires a OpenSSL 1.1.1 or newer
不知道为什么
再次重装openssl
openssl make 报错:
testParse errors: No plan found in TAP output
又【重装openssl】
搞了几天终于可以 pip install 了(最后装上openssl1.1.1f)
8. scrapyd运行突然报错“ModuleNotFoundError: No module named ‘_sqlite3’”
# 1.安装sqlite-devel
yum install sqlite-devel
# 2.重新编译、安装python
# 2.1 配置编译参数(需要进入之前解压python压缩包得到的文件夹,我的是Python-3.8.3)
cd Python-3.8.3
./configure --enable-optimizations
# 2.2 编译和安装
sudo make
sudo make install
9. 外网无法访问scrapyd的X.X.XX.XX:6800
firewall-cmd --zone=public --add-port=6800/tcp --permanent
关闭防火墙:
systemctl stop firewalld.service
10. pip install 报错 ModuleNotFoundError: No module named '_ctypes'
1、须命令安装libbffi-devel软件包: yum install libffi-devel -y
2、安装完后再重装python3,config make make install
三连
11. 链接服务器使用xshell运行scrapyd,报错ModuleNotFoundError: No module named '_bz2'
- 安装
ModuleNotFoundError: No module named '_bz2'
显示已存在 - 查看位置(这里没查到位置,方法不对?)
(xmt-env) [root@cscm-spider /]# rpm -q bzip2
bzip2-1.0.6-13.el7.x86_64
(xmt-env) [root@cscm-spider /]# which bzip2
/usr/bin/bzip2
(xmt-env) [root@cscm-spider /]# whereis bzip2
bzip2: /usr/bin/bzip2 /usr/share/man/man1/bzip2.1.gz
- 手动查找在(/usr/lib64/python3.6/lib-dynload)目录
下载后改名并上传_bz2.cpython-311m-x86_64-linux-gnu.so
文件到(/usr/local/python3/lib/python3.11/lib-dynload)目录下
注意这里应该改成_bz2.cpython-311-x86_64-linux-gnu.so
- 将上面的so加上执行权限
使用命令chmod +x _bz2.cpython-311-x86_64-linux-gnu.so
,或者在xftp中修改权限
12. 链接服务器使用xshell运行scrapyd,No module named '_lzma
第一步:安装lzma
sudo yum install liblzma-dev
pip3 install backports.lzma
第二步:修改原本就存在的lmza.py文件
把 /usr/local/python3/lib/python3.11
(这个要查看xshell日志) 27行
修改如下:
try:
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_prope
13. 在spider-admin-pro里面启动爬虫报错:
File "/xmt-env/lib/python3.11/site-packages/scrapy/spiders/__init__.py", line 53, in from_crawler
spider = cls(*args, **kwargs)
TypeError: cqxwNoSotreSpider.__init__() got an unexpected keyword argument '_job'
研究发现应该是重写了init
方法,但是参数有误,删除即可
您在子类中重新定义了`__init__`,并将其签名从`scrapy.Spider`更改。
您也没有调用`scrapy.Spider`的`__init__`方法。在scrapy.Spider`[source for **init**]
或者这样写: `super(SpiderXmt2_beibeinews, self).__init__(*args, **kwargs)`