当前位置:   article > 正文

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

django scrapy

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

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

0、scrapy配置

settings.py

  1. import os
  2. import sys
  3. sys.path.append(os.path.dirname(os.path.abspath('.')))
  4. os.environ['DJANGO_SETTINGS_MODULE'] = 'biyeshiji.settings'
  5. import django
  6. django.setup()
  7. ITEM_PIPELINES = {
  8. 'toutiao_spider.pipelines.ToutiaoSpiderPipeline': 1,
  9. }

item.py

  1. from scrapy_djangoitem import DjangoItem
  2. from app.models import TouTiao
  3. class ToutiaoSpiderItem(DjangoItem):
  4. django_model = TouTiao

spider.py

  1. # -*- coding: utf-8 -*-
  2. # 头条爬虫
  3. import scrapy,json
  4. from scrapy.http import Request
  5. from urllib import parse
  6. from toutiao_spider.items import ToutiaoSpiderItem
  7. class ToutiaoSpider(scrapy.Spider):
  8. name = 'toutiao'
  9. def start_requests(self):
  10. query_string = {
  11. "offset": "0",
  12. "format": "json",
  13. "keyword": "甘肃",
  14. "autoload": "true",
  15. "count": "20",
  16. "cur_tab": "1",
  17. "from": "search_tab",
  18. "pd": "synthesis"
  19. }
  20. qs = parse.urlencode(query_string)
  21. url = 'https://www.toutiao.com/search_content/?'+qs
  22. url = "https://lf.snssdk.com/api/search/content/?"+qs
  23. yield Request(url=url, callback=self.parse_init_data)
  24. def parse_init_data(self, response):
  25. res = json.loads(response.text)['data']
  26. item = ToutiaoSpiderItem()
  27. for i in res:
  28. item['title'] = i['display']['lemmaTitle']
  29. item['description'] = i['display']['picAbs']
  30. yield item

一、环境配置

安装scprayd,网址:GitHub - scrapy/scrapyd: A service daemon to run Scrapy spiders

安装scrapyd-client,网址:GitHub - scrapy/scrapyd-client: Command line client for Scrapyd server

二、验证安装成功

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

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

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

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

scrapyd-deploy -l

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

解决方案:

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

内容为:

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

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

三、发布工程到scrapyd

这一步要进入scrapy项目,否则会出现

Error: no Scrapy project found in this location

scrapyd-deploy <target> -p <project>

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

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

  1. [deploy:scrapyd1]
  2. url = http://localhost:6800/
  3. project = baidu

因此我输入的命令是:

scrapyd-deploy scrapyd1 -p baidu

四、启动爬虫

  1. import requests
  2. url = 'http://localhost:6800/schedule.json'
  3. data = {'project':'baidu', 'spider':'toutiao'}
  4. print(requests.post(url=url,data=data))

spider 是 爬虫的 name。


五、获取爬虫结果

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

有需要Django+Vue毕设的可以进群:167392565

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号