美丽的汤-意想不到的结果

时间:2018-10-08 19:18:41

标签: url web-scraping beautifulsoup python-3.6 screen-scraping

我正在尝试从二手车网站上抓取特定车型及其对应颜色的数据。

到目前为止,一切正常,但是输出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。也许这与请求的网址有关?

很高兴有人知道!

0 个答案:

没有答案