用django 操控scrapy 实现实时信息的爬取

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37049050/article/details/84625949

首先我的项目结构是这样:

途中圈出来的是scrapy项目。外层的为django 项目。

0、scrapy配置

settings.py

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = 'biyeshiji.settings'
import django
django.setup()

ITEM_PIPELINES = {
   'toutiao_spider.pipelines.ToutiaoSpiderPipeline': 1,
}

item.py

from scrapy_djangoitem import DjangoItem
from app.models import TouTiao

class ToutiaoSpiderItem(DjangoItem):
    django_model = TouTiao

spider.py

# -*- coding: utf-8 -*-
# 头条爬虫
import scrapy,json
from scrapy.http import Request
from urllib import parse
from toutiao_spider.items import ToutiaoSpiderItem

class ToutiaoSpider(scrapy.Spider):
    name = 'toutiao'

    def start_requests(self):
        query_string = {
            "offset": "0",
            "format": "json",
            "keyword": "甘肃",
            "autoload": "true",
            "count": "20",
            "cur_tab": "1",
            "from": "search_tab",
            "pd": "synthesis"
        }
        qs = parse.urlencode(query_string)
        url = 'https://www.toutiao.com/search_content/?'+qs
        url = "https://lf.snssdk.com/api/search/content/?"+qs
        yield Request(url=url, callback=self.parse_init_data)

    def parse_init_data(self, response):
        res = json.loads(response.text)['data']
        item = ToutiaoSpiderItem()
        for i in res:

            item['title'] = i['display']['lemmaTitle']
            item['description'] = i['display']['picAbs']
            yield item

一、环境配置

安装scprayd,网址:https://github.com/scrapy/scrapyd

安装scrapyd-client,网址:https://github.com/scrapy/scrapyd-client

二、验证安装成功

在命令框中输入scrapyd,输出如下说明安装成功

打开http://localhost:6800/ 可以看到

点击jobs可以查看爬虫运行情况。

接下来就是让人很头疼的scrapyd-deploy问题了,查看官方文档上说用

scrapyd-deploy -l

可以看到当前部署的爬虫项目,但是当我输入这段命令的时候显示这个命令不存在或者有错误、不合法之类的。

解决方案:

在你的python目录下的Scripts文件夹中,我的路径是“D:\program files\python2.7.0\Scripts”,增加一个scrapyd-deploy.bat文件。

内容为:

@echo off
"D:\program files\python2.7.0\python.exe" "D:\program files\python2.7.0\Scripts\scrapyd-deploy" %*

然后重新打开命令框,再运行scrapyd-deploy -l 就可以了。
 

三、发布工程到scrapyd

scrapyd-deploy <target> -p <project>

target为你的服务器命令,project是你的工程名字。

首先对你要发布的爬虫工程的scrapy.cfg 文件进行修改,我这个文件的内容如下:

[deploy:scrapyd1]
url = http://localhost:6800/
project = baidu

因此我输入的命令是:

scrapyd-deploy scrapyd1 -p baidu

四、启动爬虫

import requests

url = 'http://localhost:6800/schedule.json'
data = {'project':'baidu', 'spider':'toutiao'}

print(requests.post(url=url,data=data))

spider 是 爬虫的 name。


五、获取爬虫结果

requrl = "http://localhost:6800/listjobs.json?project=baidu"
requests.get(requrl)

猜你喜欢

转载自blog.csdn.net/qq_37049050/article/details/84625949