python-scrapy框架
依赖包Twisted安装:
scrapy依赖一些包,主要是twisted模块
win10:
1、pip install wheel
2、在python的非官方依赖包网站下载twisted模块文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/
下载对应自己操作系统版本的twisted的whl文件,将文件放到wheel文件夹下,然后cmd窗口进入该文件夹下面执行命令:pip3 install 下载文件名称+后缀名,
注意,一定要加后缀名,这样,在自己的python环境中就安装了twisted模块
3、下载scrapy模块
4、将scrapy添加到环境变量,和django的admin相似操作
5、在cmd窗口下,进入指定目录执行命令创建项目:scrapy startproject tutorial
6、如果运行的时候提示缺少pywin32模块,可以在这个网站:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/
下载对应版本的pywin32软件,点击安装就行
centos7:
(如果python环境下出现sqlite3模块导入问题的话)要下载sqlite-devel包:yum -y install sqlite-devel,然后进入python3解压的源文件目录按照另一篇博客提到的python3安装执行./config和make&make install重新编译python
1、源码下载twisted,https://twistedmatrix.com/trac/wiki/Downloads
2、解压,进入解压目录,执行python setup.py install
3、运行python导入twisted模块时会提示没有找到模块:ModuleNotFoundError: No module named 'incremental'
这时候可以pip3下载incremental模块,然后再在python环境导入twisted就不会有问题
4、下载scrapy模块
5、将scrapy添加到环境变量:ln -s /usr/local/python3/bin/scrapy /usr/bin/scrapy
6、在终端窗口自己项目目录下执行命令创建scrapy工程:scrapy startproject tutorial
scrapy项目创建
在cmd或者linux命令行下执行命令:scrapy starproject 项目名
进入项目目录,执行:scrapy genspider app app.com
其中app可以自己命名,
这样就创建了项目
centos7下scrapyd和win10下scrapyd-client的安装:
多台服务器才能叫部署,个人主机只能叫安装!
win环境安装scrapy-client:最好是源码安装,在github上查找scrapy-client下载,解压缩,进入解压缩的目录执行python setup.py install进行安装,(pip3 install scrapy-client,有坑)
centos7安装scrapyd:pip3 install scrapyd
提示为连接到系统环境路径:
- Installing collected packages: scrapyd
- The script scrapyd is 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.
- Successfully installed scrapyd-1.2.0
可以做一个scrapyd的软件界,类似于pip3的软连接
修改default-scrapd.conf默认配置文件,将其中bind的地址修改为0.0.0.0(不知道配置文件路径的,可以find / -name default-scrapd.conf)
服务器防火墙开启6800端口(scrapyd运行的默认端口为6800):iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 6800 -j ACCEPT
service iptables save
# 保存当前的防火墙策略
service iptables restart
# 重启iptables
运行scrapyd启动命令:scrapyd
注意:一般只能在局域网内浏览器远程操作服务器的scrapyd的web窗口,要想公网访问,最好申请域名地址
有 N 台云主机,就可以通过 Scrapy-Redis 构建分布式爬虫
运行爬虫程序注意事项:
在cmd窗口执行scrapy crawl spidername 的时候,如果没有出现任何内容,请将settings配置文件的 ROBOTSTXT_OBEY 改为False,
注意,这会触犯爬虫法律行为,因为有些网站不允许爬虫进入,如果遇到rotbot.text为forbidden的话,最好还是小心点,还是为True好点
win10上传爬虫项目到centos7服务器操作:
参考网址:https://www.cnblogs.com/yijian001/p/9051124.html(内含Nginx下的配置信息)
上传到服务器之后,可以在客户端或者服务端执行命令:curl http://localhost(或者服务器ip):6800/schedule.json -d project=项目名 -d spider=爬虫名
要查看运行状态或者运行日志,可以在浏览器打开:http://localhost(或者服务器ip):6800
在里面可以查看爬虫的状态和日志记录。
scrapy项目运行和参考文献请参考:
http://www.cnblogs.com/wupeiqi/articles/6229292.html
https://docs.scrapy.org/en/latest/