DoggieMurr
@DoggieMurr
Python Enthusiast

Как отформатировать данные которые получены с помощью парсера?

Есть парсер:
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import csv
import html2text


h = html2text.HTML2Text()
h.ignore_links = True

options = webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('user-agent=Mozilla/5.0 (Android 12; Mobile; rv:68.0) Gecko/68.0 Firefox/96.0')
options.add_argument('--headless')

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

url = 'https://bidfax.info'


def get_car(brand=None, model=None, year=None):
    for page in range(1, 0, -1):
        driver.get(f'{url}/{brand}/{model}/f/year-from={year}/year-to={year}/page/{page}/')
        soup = BeautifulSoup(driver.page_source, 'lxml')
        info = soup.find_all('div', {'class': 'thumbnail offer'})
        cars = h.handle(str(info))
        with open('cars.txt', 'w') as file:
            file.write(cars)


get_car('audi', 'a7', 2016)

который возвращает файл с данными такого плана:
![](/uploads/posts/2022-02/09/audi-a7-2016-wau2gafc3gn041437-img1.jpg)

__10275

## Audi A7 3.0 Prestige 2016 Gray 3.0 vin: WAU2GAFC3GN041437

Аукцион:  IAAI  ![На утверждении](/templates/ru/dleimages/onapproval2.png)

Номер лота: 31967007

Состояние: Run and Drive

Повреждение: Rear

Пробег: 130343 мили (Actual)

Дата продажи: 08.02.2022

Подробнее


Вопрос состоит в том чтобы данные были в следующем формате:
Audi
A7 
3.0 
Prestige 
2016 
Gray 
WAU2GAFC3GN041437
IAAI
31967007
Run and Drive
Rear
130343 мили (Actual)
08.02.2022
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
Зачем html2text я так и не понял. В BS есть все что нужно
Вот пример получение необходимой информации. Остальное при необходимости напильником подгоняется

soup = BeautifulSoup(file, 'html.parser')
blocks = soup.find_all('div', {'class': 'thumbnail offer'})

for block in blocks:
    infos = block.h2.string.split(" ")
    for info in infos:
        if info and info != "vin:":
            print(info)
    for p in block.find_all('p'):
        name, value = p.get_text().split(":")
        print(value.strip())


Результат
Mclaren
Automotive
600Lt
2019
Orange
3.8L
8
SBM13RAAXKW007150
Copart
65542851
Enhanced Vehicles
Top/Roof
0 миль (Not Actual)
07.02.2022
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы