обязательно подтвердите, если вы нашли этот вопрос хорошо изученным и полезным для вас. Другие люди заслуживают такой же возможности находить полезные сообщения.
У меня был этот функциональный код не так давно, когда я использовал этот паук-скрап, написанный на python на окнах, теперь он появляется при использовании сканирования-скрапа
ScrapyDeprecationWarning: Импорт из scrapy.xlib.pydispatch устарел и> больше не будет поддерживаться в будущих версиях Scrapy. Если вы просто хотите подключить> сигналы, используйте метод класса from_crawler, в противном случае импортируйте pydispatch напрямую, если> это необходимо. Смотрите: https://github.com/scrapy/scrapy/issues/1762 из> scrapy.xlib.pydispatch dispatcher import
Я просмотрел их страницу на форуме github для объяснения, затем заменил этот пакет на PyDispatcher 2.0.5, и это возвращает, чтопакет не находится в моей среде conda (он есть) - однако они упомянули добавление метода from_crawler в качестве решения проблемы. Я не уверен, как это сделать
https://github.com/scrapy/scrapy/issues/1762 в третьем комментарии внизу они говорят это
@ classmethod def from_crawler (cls, crawler, * args, ** kwargs): spider = super (MySpider, cls) .from_crawler (crawler, * args, ** kwargs) crawler.signals.connect (spider.spider_opened, signal.spider_opened) возвращать spider
import scrapy,time
from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher
from mysql.connector import (connection)
from scrapy.selector import Selector
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class GetdataSpider(scrapy.Spider):
name = 'placeholder'
start_urls = ['placeholder.org/search/sss?postedToday=1']
cnx = connection.MySQLConnection(user='root', password='',
host='127.0.0.1',
database='placeholder')
cursor = cnx.cursor()
def __init__(self):
dispatcher.connect(self.spider_closed, signals.spider_closed)
def parse(self, response):
try:
x= Selector(response)
, как предположили Luiz и Tomjn, кажется, что сигналы - это альтернативное решение для запуска этого скрипта. Тем не менее, self используется во всем скрипте, а def spider_closed используется здесь для действия, я не уверен, как изменить это для работы с методом from_crawler.
def spider_closed(self, spider):
sql = "DELETE FROM images WHERE EventDate < NOW() - INTERVAL 3 DAY"
self.cursor.execute(sql)
sql = "DELETE FROM dialy_items WHERE EventDate < NOW() - INTERVAL 3 DAY"
self.cursor.execute(sql)
self.cnx.commit()
self.cursor.close()
self.cnx.close()