Я очищаю несколько страниц без ошибок, но сканер не выдает никаких выходных данных. Функция parse_article
работает нормально (я проверял это отдельно), но вместе с функцией parse
она больше не создает никакого вывода. Есть идеи?
Я запустил сканер из командной строки: scrapy crawl all_articles_from_one_page -o test_file.csv
import scrapy
from scrapping_538.items import Scrapping538Item
from scrapy.loader import ItemLoader
from scrapy.loader.processors import MapCompose
import datetime
import socket
class BasicSpider(scrapy.Spider):
name = 'all_articles_from_one_page'
allowed_domains = ['web']
start_urls = ('http://fivethirtyeight.com/features/',)
def parse(self, response):
# iterate through articles
article_divs = response.xpath('//*[@id="primary"]//div[contains(@id, "post")]')
for article in article_divs:
print('\n**********************************************')
article_link = article.xpath('.//h2/a/@href').extract()[0]
print('------article link: ' + str(article_link))
yield scrapy.Request(article_link, callback=self.parse_article)
def parse_article(self, response):
il = ItemLoader(item=Scrapping538Item(), response=response)
il.add_css('title', 'h1.article-title::text')
il.add_css('date', 'time.datetime::text')
il.add_css('author', '.author::text')
il.add_css('filed_under', '.term::text')
il.add_css('article_text', '.entry-content *::text')
il.add_value('url', response.url)
il.add_value('project', self.settings.get('BOT_NAME'))
il.add_value('spider', self.name)
il.add_value('server', socket.gethostname())
il.add_value('date_import', datetime.datetime.now())
return il.load_item()