Как запланировать запуск паука каждые 5 минут? - PullRequest
0 голосов
/ 06 апреля 2020

Я пытался выяснить, как запланировать мой паук-скрап на несколько дней без всякой удачи. (Я пробовал все от Windows Task Scheduler до scrapy-do lib, но на моем MAIN.PY ) ничего не получалось

(моя главная цель - запланировать, как мой паук собирает данные из мой паук NewsSpider в mySQL news_db база данных каждые 5 минут)

Пожалуйста, посмотрите на мой скрипт как на его немного измененный и при необходимости измените его. Я действительно хочу, чтобы это сработало.

MAIN.PY

from scrapy import cmdline
cmdline.execute("scrapy crawl news".split())

NEWS_SPIDER.PY

import scrapy
from ..items import WebspiderItem


class NewsSpider(scrapy.Spider):
    name = 'news'
    start_urls = [
        'https://www.coindesk.com/feed'
    ]

    def parse(self, response):
        pub_date = response.xpath('//pubDate/text()').extract()[0]
        page_title = response.xpath('//title/text()').extract()[2]
        page_summary = response.xpath('//description/text()').extract()[1]
        text_link = response.xpath('//link/text()').extract()[2]

        item = WebspiderItem()
        item['date'] = pub_date
        item['title'] = page_title
        item['summary'] = page_summary
        item['link'] = text_link

        yield item

ITEMS.PY

import scrapy


class WebspiderItem(scrapy.Item):
    # define the fields for your item here like:
    date = scrapy.Field()
    title = scrapy.Field()
    summary = scrapy.Field()
    link = scrapy.Field()

PIPELINES.PY

import mysql.connector


class WebspiderPipeline(object):

    def __init__(self):
        self.create_connection()

    def create_connection(self):
        self.conn = mysql.connector.connect(
            host='localhost',
            user='root',
            passwd='passordpassord',
            database='news_db'
        )
        self.curr = self.conn.cursor()

    def process_item(self, item, spider):
        self.store_db(item)
        return item

    def store_db(self, item):
        self.curr.execute("""insert into news_tb values (%s, %s, %s, %s)""", (
            item['date'],
            item['title'],
            item['summary'],
            item['link']

        ))
        self.conn.commit()

...