赞
踩
首先我的项目结构是这样:
途中圈出来的是scrapy项目。外层的为django 项目。
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,网址: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文件。
内容为:
- @echo off
- "D:\program files\python2.7.0\python.exe" "D:\program files\python2.7.0\Scripts\scrapyd-deploy" %*
然后重新打开命令框,再运行scrapyd-deploy -l 就可以了。
这一步要进入scrapy项目,否则会出现
Error: no Scrapy project found in this location
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)
有需要Django+Vue毕设的可以进群:167392565
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。