Вот полный код, который я написал:
import pandas as pd
import scrapy
from scrapy.crawler import CrawlerProcess
class quote_collector(scrapy.Spider):
name = "quote_collector_spider"
def start_requests( self ):
main_url = 'https://www.goodreads.com/quotes?'
urls = [ 'https://www.goodreads.com/quotes?' ]
for i in range(98):
url = main_url+'page='+str(i+2)
urls.append(url)
for url in urls:
yield scrapy.Request( url = url, callback = self.parse )
def parse( self, response ):
quote_blocks = response.xpath('//div[@class="quoteText"]')
my_quotes = []
for block in quote_blocks:
quote = block.xpath('text()').extract_first().strip()
author = block.xpath('.//span[@class="authorOrTitle"]/text()').extract_first().strip()
ref = block.xpath('.//span/a[@class="authorOrTitle"]/text()').extract_first()
my_quotes.append([quote, author, ref])
quotes_df = pd.DataFrame(columns = ['Quote','Author','Referrence'])
quotes_df = pd.concat(quotes_df, pd.DataFrame(my_quotes, columns = ['Quote','Author','Referrence']))
# initiate a CrawlerProcess
process = CrawlerProcess()
# tell the process which spider to use
process.crawl(quote_collector)
# start the crawling process
process.start()
И ошибка, которую я получаю, здесь:
* Файл "C: \ ProgramData \ Anaconda3 \ lib \ site -packages \ scrapy \ crawler.py ", строка 309, в стартовом реакторе.run (installSignalHandlers = False) # блокирующий вызов
Файл" C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ twisted \ internet \ base.py ", строка 1282, в запуске self.startRunning (installSignalHandlers = installSignalHandlers)
Файл" C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ twisted \ internet \ base. py ", строка 1262, в startRunning ReactorBase.startRunning (self)
Файл" C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ twisted \ internet \ base.py ", строка 765, в startRunning повысить ошибку. ReactorNotRestartable ()
ReactorNotRestartable * Пожалуйста, помогите мне понять, что это за ошибка и что я здесь делаю неправильно.