Как получить текст и значение href в теге привязки с помощью scrapy, xpath, python

У меня есть такой HTML-файл:

<div ckass="jokes-nav">
  <ul>
    <li><a href="http://link_1">Link 1</a></li>
    <li><a href="http://link_2">Link 2</a></li>
  </ul>
</div>

В папке Spiders у меня есть файл jokes.py вроде этого:

import scrapy
from demo_project.items import JokeItem
from scrapy.loader import ItemLoader

class JokesSpider(scrapy.Spider):
    name = 'jokes'

    start_urls = [
        'http://www.laughfactory.com/jokes/'
    ]

    def parse(self, response):
        for joke in response.xpath("//div[@class='jokes-nav']/ul"):
            l = ItemLoader(item = JokeItem(), selector = joke)
            l.add_xpath('joke_title', ".//li/a/text()")

            """ yield {
                'joke_text': joke.xpath(".//div[@class='joke-text']/p").extract_first()
            } """

            yield l.load_item()

и я вызываю класс JokesSpider в моем main.py (этот файл находится в корне), и это мой код

from scrapy.crawler import CrawlerProcess
from demo_project.spiders.jokes import JokesSpider

process = CrawlerProcess(settings={
    "FEEDS": {
        "items.json": {"format": "json"},
    },
})

process.crawl(JokesSpider)
process.start() # the script will block here until the crawling is finished

Я хочу записать данные в items.json, но когда я запускаю этот код, items.json ничего в нем не содержит, как мне решить эту проблему. Большое спасибо


person Claire Duong    schedule 12.06.2020    source источник
comment
Привет, я думаю, вам нужно взглянуть на ваш файл pipelines.py, если вы используете шаблон scrapy.   -  person EnriqueBet    schedule 12.06.2020


Ответы (1)


Вы можете установить параметры FEED_FORMAT и FEED_URI для сохранения данных в файле json.

process = CrawlerProcess(settings={
    'FEED_FORMAT': 'json',
    'FEED_URI': 'items.json'
})
person Patrick Klein    schedule 13.06.2020