Я пытаюсь собрать данные с сайта подержанных автомобилей для конкретной модели автомобиля и соответствующих цветов.
Пока все работает нормально, но вывод csv слишком мал.Многие результаты просто отсутствуют.Регулировка скорости соскабливания, казалось, не имела никакого значения.Количество перечисленных автомобилей по-прежнему слишком мало по сравнению с тем, что отображается на самом сайте.
Вот код на данный момент:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import csv
from datetime import datetime
from geopy.geocoders import Nominatim
from geopy.exc import GeocoderTimedOut
geolocator = Nominatim(user_agent="Alfa_Atlas")
######################################################
# Red Cars
######################################################
def red_cars():
page_1 = 'https://www.autoscout24.de/lst/alfa-romeo/giulia?sort=age&desc=1&bcol=10&ustate=N%2CU&size=20&page='
page_2 = '&cy=D&fregfrom=2014&atype=C&'
page_list = []
for i in range(1,5):
a = (page_1 + str(i) + page_2)
page_list.append(a)
data = []
car_color = 'red'
for count in page_list:
page = urlopen(count)
soup = BeautifulSoup(page, 'html.parser')
name_box = soup.find('h2', attrs={'class': 'cldt-summary-makemodel sc-font-bold sc-ellipsis'})
name = name_box.text.strip()
version = soup.find('h2', attrs={'class': 'cldt-summary-version sc-ellipsis'})
version_clean = version.text.strip()
price_box = soup.find('span', attrs={'class': 'cldt-price sc-font-xl sc-font-bold'})
price = price_box.text.strip()
place = soup.find('span', attrs={'class': 'cldf-summary-seller-contact-zip-city'})
place_clean_lat = geolocator.geocode(place.text.strip(), timeout=10).latitude
place = soup.find('span', attrs={'class': 'cldf-summary-seller-contact-zip-city'})
place_clean_lon = geolocator.geocode(place.text.strip(), timeout=10).longitude
data.append((name, version_clean, price, place_clean_lat, place_clean_lon))
with open('Alfa_Used_Stock.csv', 'a') as csv_file:
writer = csv.writer(csv_file)
for name, version_clean, price, place_clean_lat, place_clean_lon in data:
writer.writerow([name, version_clean, price, place_clean_lat, place_clean_lon, car_color, datetime.now()])
red_cars()
Код является представительным для одного цвета.Я сделал то же самое для всех остальных цветов.
Поскольку он не выдает никаких ошибок, я совершенно не понимаю, где атаковать проблему.Должно быть получено не менее 133 результатов, но в настоящее время я нахожусь в 10. Может быть, это проблема с запрошенными URL?
Рад, если у кого-то есть подсказка!