scrapy按顺序启动多个爬虫代码片段(python3)

问题:在运行scrapy的过程中,如果想按顺序启动爬虫怎么做?

背景:爬虫A爬取动态代理ip,爬虫B使用A爬取的动态代理ip来伪装自己,爬取目标,那么A一定要在B之前运行该怎么做?

IDE:pycharm

版本:python3

框架:scrapy

系统:windows10

代码如下:(请自行修改)

# !/usr/bin/env python3
# -*- coding:utf-8 -*-
from scrapy import cmdline
from twisted.internet import reactor, defer
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
from torrentSpider.spiders.proxy_ip_spider import ProxyIpSpider
from torrentSpider.spiders.douban_spider import DoubanSpider
from scrapy.utils.project import get_project_settings

‘‘‘
以下是多个爬虫顺序执行的命令
‘‘‘
configure_logging()
# 加入setting配置文件,否则配置无法生效# get_project_settings()获取的是setting.py的配置
runner = CrawlerRunner(get_project_settings())

@defer.inlineCallbacks
def crawl():
    yield runner.crawl(ProxyIpSpider)
    yield runner.crawl(DoubanSpider)
    reactor.stop()

crawl()
reactor.run()  # the script will block here until the last crawl call is finished

‘‘‘
以下是单个爬虫执行的命令
‘‘‘
# def execute():
    # cmdline.execute([‘scrapy‘, ‘crawl‘, ‘proxy_ip_spider‘])
#
#
# execute()

原文地址:https://www.cnblogs.com/huangtao1927/p/10290226.html

时间: 2024-10-28 23:47:55

scrapy按顺序启动多个爬虫代码片段(python3)的相关文章

scrapy主动退出爬虫的代码片段(python3)

问题:在运行scrapy的过程中,如果想主动退出该怎么做? 背景:比如说我只要爬取当日的新闻,那么在遍历的时候,如果出现了超过1条不是当日的新闻,那么就不爬取了,就主动退出爬虫,这个时候该怎么做呢? IDE:pycharm 版本:python3 框架:scrapy 系统:windows10 代码如下: # -*- coding: utf-8 -*- import scrapy from torrentSpider.items.NavigationItem import NavigationIte

使用scrapy crawl name启动一个爬虫时出现的问题

使用scrapy crawl name启动一个爬虫时出现的问题,我的项目名字叫做 "spider_city_58",代码如下: from scrapy import cmdline cmdline.execute("scrapy crawl spider_city_58".split()) 来启动一个爬虫,却出现了如下错误 ImportError: No module named win32api 一开始尝试了网上其他的方法,就是去下载"pywin32-2

关于爬虫平台的架构实现和框架的选型(二)--scrapy的内部实现以及实时爬虫的实现

我们接着关于爬虫平台的架构实现和框架的选型(一)继续来讲爬虫框架的架构实现和狂阶的选型. 前面介绍了scrapy的基本操作,下面介绍下scrapy爬虫的内部实现架构如下图 1.Spiders(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器) 2.Engine(引擎):负责Spider.ItemPipeline.Downloader.Scheduler中间的通讯,信号.数据传递等. 3.Sc

Node.js(十三)——Promise重构爬虫代码

在重构代码之前,先要了解下什么是https? https协议:基于ssl/tls的http协议,所有的数据都是在 ssl/tls协议的封装之上传输的,也就是说https协议是在http协议基础上 添加了ssl/tls握手以及数据加密传输,因此这就是两者之间最大的区别. https模块专门处理加密访问的,区别在于搭建https服务器的时候需要有ssl证书. 模拟搭建https服务器 var https = require('https') var fs = require('fs')//文件系统模

优酷电视剧爬虫代码实现一:下载解析视频网站页面(3)补充知识点:XPath无效怎么办?

XPath无效怎么办?明明XPath是通过定位子节点,copy xpath得到的,理论上是正确的 XPath无效怎么办?明明XPath是通过按F12定位符再copy XPath得到的,可是放在代码里就是不对呢? 前提:优酷电视剧爬虫代码实现一:下载解析视频网站页面(2)工作量已经完成.基于这个基础,进一步完善代码 1.新建页面解析接口. package com.dajiangtai.djt_spider.service; import com.dajiangtai.djt_spider.enti

python爬虫代码

原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 import datetime import MySQLdb from bs4 import BeautifulSoup import sys reload(sys) sys.setdefaultencoding("utf-8") class Splider(object): def __in

mirantis fuel puppet执行顺序 和 对整个项目代码的执行流程理解

stage执行顺序 stage {'zero': } -> stage {'first': } -> stage {'openstack-custom-repo': } -> stage {'netconfig': } -> stage {'corosync_setup': } -> stage {'openstack-firewall': } -> Stage['main'] 1.class {'begin_deployment': stage => 'zero

python写的简单有效的爬虫代码

python写的简单有效的爬虫代码 by 伍雪颖 import re import urllib def getHtml(url): html = urllib.urlopen(url) scode = html.read() return scode def getImage(source): reg = r'src="(.*?\.jpg)"' imgre = re.compile(reg) images = re.findall(imgre,source) x = 0 for i

【数据结构】线性表&&顺序表详解和代码实例

喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺序的,如果有多个元素,除开头和结尾以外的元素都有一个前驱和一个后继.而开头元素只有后继,结尾元素只有前驱. 其次线性表是有限的,也就是里面的元素个数是有限的. 1.1 线性表的基本操作(描述) 1ADT 线性表(List) 2Data 3    线性表的数据对象集合为{a1, a2, a3, ...