дамп ошибки json при просмотре веб-страниц в python - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь загрузить миниатюры с веб-сайта цифрового сообщества, чтобы сделать визуализацию imageJ. Все печатается до файла дампа JSON. У меня есть код, написанный моим другом, чтобы загрузить изображение, но мне нужно иметь json-файл URL-адресов, прежде чем я продолжу. В конце он выдает ошибку «Объект типа Tag не поддерживает сериализацию в формате JSON».

Извините за пробелы, я новичок в переполнении стека, и когда я копирую и пропускаю из Sublime, это портится.

from bs4 import BeautifulSoup
import requests
import re
import json

all_my_data = []

url = "https://www.digitalcommonwealth.org/search?f%5Bcollection_name_ssim%5D%5B%5D=Produce+Crate+Labels&f%5Binstitution_name_ssim%5D%5B%5D=Boston+Public+Library&per_page=50"
results_page = requests.get(url)
page_html = results_page.text
soup = BeautifulSoup(page_html, "html.parser")

all_labels = soup.find_all("div", attrs = {'class': 'document'})

for items in all_labels:
    my_data = {
    "caption": None,
        "url": None,
    "image url": None,
    }
    item_link = items.find('a') 
abs_url = "https://www.digitalcommonwealth.org/search?f%5Bcollection_name_ssim%5D%5B%5D=Produce+Crate+Labels&f%5Binstitution_name_ssim%5D%5B%5D=Boston+Public+Library&per_page=50" + item_link["href"]
my_data["url"] = abs_url

#print(abs_url)

item_request = requests.get(abs_url)
    item_html = item_request.text
item_soup = BeautifulSoup(item_html, "html.parser")

all_field_divs = item_soup.find_all("div", attrs={'class': 'caption'})

for field in all_field_divs:
    caption = field.find("a")
    cpation = caption.text
    my_data["caption"] = caption
    #print(caption)

all_photo_urls = item_soup.find_all("div", attrs={'class': 'thumbnail'})

for photo_url in all_photo_urls:
    photo = photo_url.find('img')
    photo_abs_url = "https://www.digitalcommonwealth.org/search?f%5Bcollection_name_ssim%5D%5B%5D=Produce+Crate+Labels&f%5Binstitution_name_ssim%5D%5B%5D=Boston+Public+Library&per_page=50" + photo['src']
    my_data['image url'] = photo_abs_url
    #print(photo_abs_url)

all_my_data.append(my_data)

#print(all_my_data)


with open('fruit_crate_labels.json', 'w') as file_object:
    json.dump(all_my_data, file_object, indent=2)
    print('Your file is now ready')

Это печатает это:

Traceback (последний вызов был последним): Файл "dh.py", строка 54, в json.dump (all_my_data, file_object, indent = 2) Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/init.py", строка 179, в дампе для чанка в итерируемом: Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/encoder.py", строка 429, в _iterencode выход из _iterencode_list (o, _current_indent_level) Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/encoder.py", строка 325, в _iterencode_list приносить куски Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/encoder.py", строка 405, в _iterencode_dict приносить куски Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/encoder.py", строка 438, в _iterencode o = _default (o) Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/encoder.py", строка 179, по умолчанию поднять TypeError (f'Object типа {o. class . name } ' Ошибка типа: объект типа Tag не поддерживает сериализацию в формате JSON

спасибо за помощь!

1 Ответ

0 голосов
/ 30 апреля 2019

Следующий код в строке 35:

cpation = caption.text

должно быть:

caption = caption.text

Тогда ваш код работает так, как вы и предполагали.

...