Scrapy爬虫与Django网站结合遇到的坑
前期准备
一、首先要用scrapy独立实现数据抓取功能、和一个django网站项目。笔者就是用django写了一个简单的图片浏览网站。然后用scrapy爬取网站上的图片链接,然后调用对应的django项目中的图片数据模型,存到数据库中。从而完成了爬取和浏览的无缝对接。
实现过程
这里主要讲解scrapy与django项目结合的过程
1.首先,要在django项目根目录下创建scrapy项目。
2.scrapy项目的创建和爬虫代码的编写都没啥问题。出问题的地方在于scrapy项目的部署。第一次手生,搞了好久。
// A code block
首先把整个部署在本机服务器的流程列出来:
// 首先把整个部署在本机服务器的流程列出来:
1> scrapyd
2>scrapyd-deploy default -p project
3>curl http://localhost:6800/schedule.json -d project=<部署在服务器的项目文件名> -d spider=<你的爬虫文件名>
4>停止爬虫:curl http://localhost:6800/cancel.json -d project=<部署在服务器的项目文件名> -d job=<你的jobId>
出错1:我在执行完第一步启动scrapyd之后,执行第二步之前,将scrapyd服务停止了。然后执行第二步就会报错:
Deploy failed: <urlopen error [Errno 61] Connection refused>
正常操作是开启两个命令行界面,执行完第一步之后在另一个命令行界面执行第二步。
出错2:执行第三步命令的时候,project=?,这里应该写执行第二步成功后命令行打印的log中的project对应的工程名称
{“node_name": "Mac-mini.local", "status": "ok", "project": "project", "version": "1586867120", "spiders": 1}
出错3:编写代码过程中很容易出错,而将本来有错的项目部署到本机服务器上运行,结果只有一个,就是得不到想要的结果。在这里我建议部署之前先要调试一下程序确保程序执行成功。这时候可能很多小伙伴会问,怎样debug调试scrapy项目呢?给大家介绍一个简单易行的方法,新建一个python可执行文件,如test.py(名字随便)用于模拟命令行启动scrapy项目,这时候就可以在你的业务逻辑代码中打断点进行调试了。
详细过程可参考:链接: https://www.cnblogs.com/vevy/p/10004148.html.
以上四步执行成功后,可以在浏览器打开: http://localhost:6800/jobs.可以看到当前正在运行的爬虫项目。

本文主要介绍了项目过程中踩到的一些坑,详细项目编写过程可参考此文:
链接: https://blog.csdn.net/clayanddev/article/details/53768975.
大家也可以把自己遇到的一些问题在评论区留言,我会尽力为大家解答。