Красивый суп - неожиданные результаты - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь собрать данные с сайта подержанных автомобилей для конкретной модели автомобиля и соответствующих цветов.

Пока все работает нормально, но вывод 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?

Рад, если у кого-то есть подсказка!

...