Squeak.ru - шаблоны программирования

Анализ/извлечение данных из XML-канала API с помощью Python и Beautiful Soup

Новичок в Python/xml здесь играет с Python и BeautifulSoup, пытаясь научиться анализировать XML, в частности возиться с API Oodle.com, чтобы перечислять объявления об автомобилях. Я добился успеха с простым XML и BS, но при работе с этим я не могу получить нужные данные, независимо от того, что я пытаюсь. Я часами пытался читать документацию по Soup и не могу понять. XML имеет следующую структуру:

<?xml version="1.0" encoding="utf-8"?>
<oodle_response stat="ok">
    <current>
        ....
    </current>
    <listings>
        <element>
            <id>8453458345</id>
            <title>2009 Toyota Avalon XL Sedan 4D</title>
            <body>...</body>
            <url>...</url>
            <images>
                <element>...</element>
                <element>...</element>
            </images>
            <attributes>
                <features>...</features>
                <mileage>32637</mileage>
                <price>19999</price>
                <trim>XL</trim>
                <vin>9234234234234234</vin>
                <year>2009</year>
            </attributes>
        </element>      
        <element>.. Next car here ..</element>
        <element>..Aaaand next one here ..</element>    
    </listings>
    <meta>...</meta>
</oodle_response>

Сначала я делаю запрос с помощью urllib, чтобы получить ленту и сохранить ее в локальный файл. Потом:

xml = open("temp.xml", "r")
from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(xml)

Тогда я не уверен, что. Я пробовал много вещей, но все, кажется, отбрасывает гораздо больше мусора, чем я хочу, и это затрудняет поиск проблемы. Я пытаюсь просто получить id, название, пробег, цену, год, vin. Итак, как мне получить их и ускорить процесс с помощью цикла? В идеале я хотел цикл for, например:

for soup.listings.element in soup.listings:
    id = soup.listings.element.id
    ...

Я знаю, что это, очевидно, не работает, но что-то, что будет извлекать информацию для листинга и сохранять ее в списке, а затем переходить к следующему объявлению. Оцените помощь, ребята


Ответы:


1

Вы можете сделать что-то вроде этого:

for element in soup('element'):
    id = element.id.text
    mileage = element.attributes.mileage.text
    price = element.attributes.price.text
    year = element.attributes.year.text
    vin = element.attributes.vin.text
11.10.2011
  • О быстрое замечание. Мне пришлось изменить первую строку на «для элемента в супе («списки»)», а не в супе («элемент»). Еще раз спасибо. Теперь я просто не могу заставить его продолжать собирать данные? Он делает это только для первого списка 12.10.2011
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...