Мне нужно провести некоторое исследование рынка недвижимости, и для этого нужны цены и другие ценности от новых домов.
Так что моя идея состояла в том, чтобы зайти на сайт, где я получаю информацию.
Перейдите на сайт Main-Search-Site и очистите все RealEstateID, которые позволили бы перейти непосредственно на отдельные страницы для каждого дома, где я могу, чем извлечь нужную мне информацию.
Прямо сейчас я получаю все данные, которые я хочу для каждого дома, но так же, как необработанные данные в print()
. Я хочу сохранить все это в файле .csv, и я хотел использовать файл словаря.
Поскольку я тихий новичок в Python, было бы здорово, если бы вы могли мне помочь и объяснить мне мою ошибку.
Файл csv.file должен выглядеть примерно так:
IDS Price Size District Flattyp Rooms
123 1200 250 Hollywood good 4
253 25 Beverly Hills bad 2
952
Код:
res = requests.get('https://www.immobilienscout24.de/Suche/S-T/Wohnung-Kauf/Nordrhein-Westfalen/Duesseldorf/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/true?enteredFrom=result_list')
soup = bs(res.content, 'lxml')
r = re.compile(r'resultListModel:(.*)')
data = soup.find('script', text=r).text
script = r.findall(data)[0].rstrip(',')
#resultListModel:
results = json.loads(script)
ids = list(results['searchResponseModel']['entryInformation'].keys())
data = json.dumps(ids)
houseinfo = {}
csvData = [['id','purchasePrice','Spacesize','District','Flattyp','Rooms']]
def get_house_info (House):
for id in ids:
try:
sourceCode = urllib.request.urlopen('https://www.immobilienscout24.de/expose/' + str(id)).read()
purchasePrice = str(sourceCode).split('"purchasePrice":')[1].split(',"geoCode"')[0]
Spacesize = str(sourceCode).split('"area":')[1].split('},"details"')[0]
District = str(sourceCode).split('"quarter":')[1].split('},')[0]
Flattyp = str(sourceCode).split('"is24qa-typ grid-item three-fifths">')[1].split('</dd> </dl> <dl class')[0]
Rooms = str(sourceCode).split('is24qa-zimmer grid-item three-fifths"> ')[1].split(' </dd> </dl> <dl class=')[0]
#parking_space = str(sourceCode).split('<dd class="is24qa-garage-stellplatz grid-item three-fifths">')[1].split('</dd> </dl>')[0]
#parking_price = str(sourceCode).split('<dd class="is24qa-garage-stellplatz-kaufpreis grid-item three-fifths">')[1].split('</dd> </dl> </div>')[0]
#print(id, purchasePrice, Spacesize, Flattyp, Rooms, District,)
houseinfo [id]= {'price' : purchasePrice, 'size' : Spacesize,
'district': District, 'flattyp' : Flattyp,
'rooms': Rooms};
with open ('house.csv', 'a') as csvData:
writer = csv.writer(csvData)
writer.writerow(houseinfo)
csvData.close()
except Exception as e:
print("failed in the main loop", str(e))
get_house_info(ids)