обработайте сообщение об ошибке json.загружает ответ scrapy.xpath

#json #xpath #scrapy #handle

Вопрос:

Я пытаюсь получить данные с помощью scrapy с веб-сайта, используя следующую команду:

 jsondata = response.xpath('//script[@type="application/ld json"]/text()').extract_first()
microdata = json.loads(jsondata)   
author = microdata["author"]["name"]
editor = microdata["editor"]["name"]
daten = microdata["datePublished"]
 

но это даст мне ошибку, если часть json «//скрипт[@type=»приложение/ld json»]/текст()» не найден на веб-сайте.

Спасибо за любую помощь

Комментарии:

1. Можете ли вы добавить URL-адрес, чтобы я мог его проверить?

2. @Суперпользователь, этот пример URL-адреса с json antaranews.com/berita/2320530/… и этот пример URL-адреса без json: antaranews.com/foto/2320526/. … Спасибо

Ответ №1:

 import scrapy
import json

class RefSpider(scrapy.Spider):
    name = "refspider"

    start_urls = ['https://www.antaranews.com/berita/2320530/gempa-di-padang-lawas-utara-dipicu-oleh-aktivitas-sesar-sumatera',
                  'https://www.antaranews.com/foto/2320526/penjualan-pernak-pernik-hiasan-kemerdekaan']

    def parse(self, response):
        jsondata = response.xpath('//script[@type="application/ld json"]/text()').extract_first()

        if jsondata is not None:
            microdata = json.loads(jsondata)
            author = microdata["author"]["name"]
            editor = microdata["editor"]["name"]
            daten = microdata["datePublished"]
 

Комментарии:

1. спасибо @Суперпользователь, это работает, очень полезно