Hey vielen Dank für die Antworten. Ich hatte leider jetzt erst wieder Zeit mich daran zu setzten.
Das hier ist mein vollständiger Code:
Code: Alles auswählen
import requests
import json
from bs4 import BeautifulSoup as bs
import datetime as dt
import os
import re
import time
import urllib.request
from urllib.request import urlopen
import csv
linklist = ["https://www.immobilienscout24.de/Suche/S-2/Wohnung-Kauf/Nordrhein-Westfalen/Duesseldorf/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/true?enteredFrom=result_list", "https://www.immobilienscout24.de/Suche/S-2/P-2/Wohnung-Kauf/Nordrhein-Westfalen/Duesseldorf/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/true","https://www.immobilienscout24.de/Suche/S-2/P-3/Wohnung-Kauf/Nordrhein-Westfalen/Duesseldorf/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/true"]
for links in linklist:
res = requests.get(links)
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 = [item['@id'] for item in results['searchResponseModel']['resultlist.resultlist']['resultlistEntries'][0]['resultlistEntry']]
print(ids)
data = json.dumps(ids)
houseinfo = {}
Flattyp = ()
csvData = [['id','purchasePrice','Spacesize','District','Flattyp','Flattypp','Rooms']]
def get_house_info (House):
for id in ids:
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]
if Flattyp != str(sourceCode).split('"is24qa-typ grid-item three-fifths">')[1].split('</dd> </dl> <dl class')[0]:
Flattyp == "nicht vorhanden"
else:
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]
if parking_space != str(sourceCode).split('<dd class="is24qa-garage-stellplatz grid-item three-fifths">')[1].split('</dd> </dl>')[0]:
parking_space = "nicht vorhanden"
else:
parking_space = str(sourceCode).split('<dd class="is24qa-garage-stellplatz grid-item three-fifths">')[1].split('</dd> </dl>')[0]
with open('fooneu23.txt', 'a') as csvfile:
cols = ['id', 'price', 'size', 'district', 'flattyp', 'rooms', 'parking_space','Flattypp']
dict_result = {'id': id, 'price': purchasePrice, 'size': Spacesize, 'district': District, 'flattyp': Flattyp, 'rooms': Rooms, 'parking_space':parking_space, 'Flattypp':Flattypp}
writer = csv.DictWriter(csvfile, fieldnames=cols)
writer.writeheader()
writer.writerow(dict_result)
csvfile.close()
get_house_info(ids)
Ich habe versucht das ganze jetzt so mit einem If-Statement zu lösen:
Bekomme dabei jedoch eine Fehlermeldung.
Code: Alles auswählen
if Flattyp != str(sourceCode).split('"is24qa-typ grid-item three-fifths">')[1].split('</dd> </dl> <dl class')[0]:
Flattyp == "nicht vorhanden"
else:
Flattyp = str(sourceCode).split('"is24qa-typ grid-item three-fifths">')[1].split('</dd> </dl> <dl class')[0]
Fehlermeldung:
"UnboundLocalError: local variable 'Flattyp' referenced before assignment"
Es wäre klasse wenn mir jemand weiterhelfen könnte.