django调用scrapy爬虫(spiders:0解决)

在django框架中调用scrapy爬虫,并实现动态获取关键字进行爬虫。

 

1. 创建scrapy爬虫项目

安装scrapy

命令:pip install scrapy

创建scrapy项目

命令:scrapy startproject <自定义的项目名称>

scrapy startproject JDCrawler

创建爬虫

进入项目根目录下(参考scrapy.cfg的路径为 根目录\scrapy.cfg)

命令:scrapy genspider <自定义爬虫名称> <允许爬取的域名>

scrapy genspider jd_spider search.jd.com

实现爬虫

根据自己的任务编写爬虫代码。

2.发布scrapy项目到scrapyd

安装scrapyd,scrapyd-client。使用pip即可安装。

在terminal中输入scrapy即可启动(pycharm为例)。

在scrapy.cfg里修改以下内容

注意在此文件中不能出现中文,注释掉的中文也不允许。

[settings]
default = JDCrawler.settings


[deploy:crawler]
url = http://localhost:6800/
project = JDCrawler

部署爬虫

进入项目目录

命令:scrapyd-deploy  项目名称 -p 爬虫名称

scrapyd-deploy crawler -p JDCrawler

部署成功出现:

此处注意到spiders:1,若spiders下面有爬虫,但终端返回显示spiders:0,此时有问题。注意spiders下面只能放spider程序,解决方案是删除其他非蜘蛛程序的代码文件。

3.djando调用scrapy

修改在spiders下的蜘蛛程序。

添加__init__()方法,此处动态传入keyWord。

class JdSpiderSpider(scrapy.Spider):
    name = 'jd_spider'
    allowed_domains = ['search.jd.com']

    def __init__(self, keyWord=None, *args, **kwargs):
        super(JdSpiderSpider, self).__init__(*args, **kwargs)
        self.query = keyWord  # 传入query 

    def parse(self, response, **kwargs):
        pass

修改django的代码

import requests
	
#获取前端传来的字段信息
keyWord = request.POST['keyWord']
    
url = 'http://localhost:6800/schedule.json'
data = {'project': 'JDCrawler', 'spider': 'jd_spider', 'keyWord': keyWord}
requests.post(url=url, data=data)

 当在django中执行到requests请求,便可以实现异步爬虫。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值