пустой файл json после сканирования с использованием scrapy - PullRequest
0 голосов
/ 03 ноября 2019

Я написал простой код для веб-сканера, используя scrapy. Код моего теста может быть найден ниже.

import scrapy

class ExtractUrls(scrapy.Spider):
    name = "extract"

    # request function
    def start_requests(self):
        urls = [ 'https://www.iitdh.ac.in/events.php', ]

        for url in urls: 
            yield scrapy.Request(url = url, callback = self.parse)

    # Parse function
    def parse(self, response):

        # Extra feature to get title 
        title = response.css('title::text').extract_first()  

        # Get anchor tags 
        links = response.css('a::attr(href)').extract()

        for link in links:
            yield
            {
                'title': title,
                'links': link
            }

items.py

import scrapy

class GfgItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()
    title = scrapy.Field()
    pass

settings.py


BOT_NAME = 'gfg'

SPIDER_MODULES = ['gfg.spiders']
NEWSPIDER_MODULE = 'gfg.spiders'

# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'gfg (+http://www.yourdomain.com)'

# Obey robots.txt rules
ROBOTSTXT_OBEY = True

Когда я запускаю $scrapy crawl extract -o links.json -t json,Я хочу, чтобы вывод был сохранен в файле links.json, но мой файл links.json остается пустым. Почему?

1 Ответ

0 голосов
/ 03 ноября 2019

Попробуйте использовать GfgItem():

from items import GfgItem
.....
    for link in links: 
        item = GfgItem()
        item["title"] = title
        item["name"] = link
        yield item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...