Парсер интернет-магазина автомобилей
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Парсер интернет-магазина автомобилей 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()