Я уверен, что написал довольно сомнительный код, но, похоже, он справляется со своей задачей.Проблема в том, что он печатает данные в электронную таблицу и в столбце, где я надеюсь найти год транспортного средства, если первое слово в объявлении не является годом, то в нем отображается первое слово, которое может быть изготовителем.
По сути, я хочу установить операторы if так, чтобы, если год автомобиля не был в первом слове, но находился где-то еще в строке, он все еще находил его и печатал в моем .csv.
Кроме того, я некоторое время пытался разобрать несколько страниц и надеялся, что кто-то здесь тоже может помочь с этим.В URL-адресе есть page = 2 и т. Д., Но я не могу заставить его проанализировать все URL-адреса и получить данные на всех страницах.На данный момент все, что я пробовал, делает только первую страницу.Как вы уже догадались, я довольно новичок в Python.
import csv ; import requests
from bs4 import BeautifulSoup
outfile = open('carandclassic-new.csv','w', newline='', encoding='utf-8')
writer = csv.writer(outfile)
writer.writerow(["Link", "Title", "Year", "Make", "Model", "Variant", "Image"])
url = 'https://www.carandclassic.co.uk/cat/3/?page=2'
get_url = requests.get(url)
get_text = get_url.text
soup = BeautifulSoup(get_text, 'html.parser')
car_link = soup.find_all('div', 'titleAndText', 'image')
for div in car_link:
links = div.findAll('a')
for a in links:
link = ("https://www.carandclassic.co.uk" + a['href'])
title = (a.text.strip())
year = (title.split(' ', 1)[0])
make = (title.split(' ', 2)[1])
model = (title.split(' ', 3)[2])
date = "\d"
for line in title:
yom = title.split()
if yom[0] == "\d":
yom[0] = (title.split(' ', 1)[0])
else:
yom = title.date
writer.writerow([link, title, year, make, model])
print(link, title, year, make, model)
outfile.close()
Пожалуйста, кто-нибудь может мне помочь с этим?Я понимаю, что если утверждения в нижней части могут быть далеко.
Код успешно получает первое слово из строки, просто обидно, что структура данных не всегда год выпуска автомобиля (год)