Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Парсер интернет-магазина автомобилей drom.ru разработан на языке Python, имеет расширение EXE, предназначен для самостоятельной работы по сбору данных с сохранением в CSV файл.

import requests

from bs4 import BeautifulSoup

import csv

print('Введите название файла латинскими буквами')

file_name = str(input())

count = 1

while True:

url = f'https://auto.drom.ru/all/page{count}/'

data = requests.get(url).text

block = BeautifulSoup(data, 'lxml')

heads = block.find_all('a', class_='css-xb5nz8 ewrty961', href=True)

# print(len(heads))

for i in heads:

# print(i['href'])

get_url = (i['href'])

doock = requests.get(get_url).text

lomm = BeautifulSoup(doock, 'lxml')

try:

aeoxx = lomm.find('h1', class_='css-1tjirrw e18vbajn0')

print(aeoxx.text.strip())

nazvan = (aeoxx.text.strip())

except:

print('\n')

continue

price = lomm.find('div', class_='css-eazmxc e162wx9x0')

print(price.text.strip())

get_price = (price.text.strip())

opiss = lomm.find('table', class_='css-xalqz7 eppj3wm0').find('tbody').find_all('tr')

get_opiss = opiss[0].text.strip()

get_opiss_2 = opiss[1].text.strip()

get_opiss_3 = opiss[2].text.strip()

get_opiss_4 = opiss[3].text.strip()

get_opiss_5 = opiss[4].text.strip()

get_opiss_6 = opiss[5].text.strip()

try:

get_opiss_7 = opiss[6].text.strip()

except:

continue

try:

get_opiss_8 = opiss[7].text.strip()

except:

continue

# for z in opiss:

# print(z.text.strip())

# get_opiss = (z.text.strip())

try:

pixx = lomm.find('div', class_='css-rujmqs e1e9ee560').find('img').get('src')

print(pixx)

except:

print('\n')

continue

print('\n')

storage = {'nazvan': nazvan,

'cena': get_price,

'opiss': get_opiss,

'opiss_2': get_opiss_2,

'opiss_3': get_opiss_3,

'opiss_4': get_opiss_4,

'opiss_5': get_opiss_5,

'opiss_6': get_opiss_6,

'opiss_7': get_opiss_7,

'opiss_8': get_opiss_8,

'image': pixx}

with open(f'{file_name}.csv', 'a+', encoding='utf-16') as f:

pisar = csv.writer(f)

pisar.writerow([storage['nazvan'],

storage['cena'],

storage['opiss'],

storage['opiss_2'],

storage['opiss_3'],

storage['opiss_4'],

storage['opiss_5'],

storage['opiss_6'],

storage['opiss_7'],

storage['opiss_8'],

storage['image']])

count += 1

input()