Django Scraper Matching -Ausgabe: Match_Maker gibt nur 4 Mitglieder anstelle von 150 zurückPython

Python-Programme
Guest
 Django Scraper Matching -Ausgabe: Match_Maker gibt nur 4 Mitglieder anstelle von 150 zurück

Post by Guest »

Frage: < /p>
Ich arbeite an einem Django -Projekt, das Scrapy verwendet, um Mitgliederprofile von einer Website abzukratzen. Die abgekratzten Daten werden mit einer Methode namens match_maker verarbeitet. Ich stoße jedoch auf ein Problem, bei dem Match_Maker nur 4 Mitglieder zurückgibt, obwohl 150 Mitglieder in der Datenbank (ohne 3 Mitarbeiter). Datenbank: Enthält 153 Mitglieder; 3 sind Mitarbeiter, die 150 reguläre Mitglieder verlassen. P> Ausgabe: < /p>
In der match_maker -Methode befindet sich eine Schleife, die Räume verarbeitet und den Mitgliedern zuweist. Ein Set namens Used_rooms wird verwendet, um zugewiesene Räume zu verfolgen, um sicherzustellen, dass jeder Raum nur einmal zugewiesen wird. Das relevante Code -Snippet ist: < /p>

Code: Select all

if room["username"] in used_rooms:
continue
< /code>
Wenn diese Bedingung aktiv ist, werden nur 4 Mitglieder zurückgegeben. Wenn ich diese Überprüfung kommentiere, verarbeitet die Methode alle 150 Mitglieder, aber die Anzahl der verfügbaren Räume übersteigt eine Million, was falsch ist. < /P>
Ziel: < /p>
Ich muss, dass jeder Raum nur einem Mitglied zugeordnet wird, um sicherzustellen, dass nicht mehr als ein Mitglied einen bestimmten Raum besitzt. Ich suche Anleitungen zur Behebung dieses Problems, damit Match_Maker alle 150 Mitglieder korrekt verarbeitet, ohne mehrere Mitglieder demselben Raum zuzuweisen.
Sorgfsame Einzigartigkeit: Überprüft, dass Raum ["Benutzername"] für jeden Raum einzigartig ist. /> Überprüfte Raumdatenstruktur: bestätigte, dass Raum ["Benutzername"] in allen Räumen einzigartig ist.
Trotz dieser Bemühungen bleibt das Problem bestehen. Alle Erkenntnisse oder Vorschläge wären sehr geschätzt.def match_maker(self, members, room_data: list):
matched_items = []
used_rooms = set() # Keep track of assigned rooms
room_data_copy = deepcopy(room_data)

# Group rooms by profile_type for quick lookup
rooms_by_type = defaultdict(list)

for room in room_data_copy:
if len(room["body"]) >= 5:  # Only store rooms with a valid description
rooms_by_type[room["profile_type"]].append(room)

users = set()

for member in members:
if member.is_staff:
continue

# Get matching rooms for this profile_type
available_rooms = rooms_by_type.get(member.profile_type, [])

for room in available_rooms:
if room["username"] in used_rooms:
continue

if room["profile_type"] != member.profile_type:
continue

users.add(member.username)
matched_items.append((member, room))
used_rooms.add(room["username"])

print(f"The users are: {users}")
print(f"The number of users are: {len(users)}")

random.shuffle(matched_items)

return matched_items

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post