Я пытался выяснить, как запланировать мой паук-скрап на несколько дней без всякой удачи. (Я пробовал все от 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()