2017-09-03 2 views
1

Ich habe einen Selektor geschrieben in Python-Skript verwendet, das in der Lage ist, den Filmnamen von einer Webseite basierend auf seinem Index zu greifen. Ich möchte nur den Namen von zwei Filmen bekommen [ich wiederhole, zwei Filme] ob es 1,2 oder 3,4 oder 15,16 ist. Grundsätzlich ist es meine Absicht, zwei Indexe zu verbinden, um einen individuellen Selektor zu machen? In diesem Fall habe ich zwei Indizes 0 und 1 benutzt, um einen einzelnen Selektor mit "+" Operhand zu erstellen. Ich glaube, es sollte einen klügeren Weg geben, das Gleiche zu tun. Um genauer zu sein, sehen Sie die folgenden Beispiele:Beitritt zum Index zu einem einzigen Selektor

import requests ; from bs4 import BeautifulSoup 

soup = BeautifulSoup(requests.get("https://yts.ag/browse-movies").text,'html.parser') 
movie = soup.select(".browse-movie-title")[0].text + soup.select(".browse-movie-title")[1].text 
print(movie) 

Dies ist das Ergebnis:

Es kommt bei Nacht Mindhorn

EDIT:

Für die Klarheit von dem, was ich gesagt habe, unten:

Liste wie Ergebnis:

['Mindhorn', 'Dead Again in Tombstone'] 

Newline Ergebnis:

Mindhorn 
Dead Again in Tombstone 

Erwartete Ausgabe:

Mindhorn Dead Again in Tombstone 

Antwort

1

Mit Liste Begreifen Sie den Titel der n ersten Filme bekommen:

movies = [m.text for m in soup.select(".browse-movie-title")][:n] 

Dann können Sie den Druck Ergebnisse in verschiedenen Zeilen, wenn Sie möchten:

print('\n'.join(movies)) 

Edit: offenbar nicht BeautifulSoup nicht einige CSS-Pseudo-Klassen wie nth-child unterstützen, sonst die Anzahl der untergeordneten Knoten aus der Abfrage einschränken könnten. Für die Aufzeichnung funktioniert dieser Wähler aus der Chrome-Konsole:

section .row .browse-movie-wrap:nth-child(-n+2) 
+0

Dank stjernaluiht Sie die Perle sind. Das habe ich erwartet. Btw, könntest du mir vorschlagen, wie ich das Ergebnis weder in Newline noch in Listen-ähnlich drucken kann, sondern was wir im Allgemeinen sehen. Lass es mich wissen, wenn du nicht verstehst, was ich meinte. – SIM

+0

Ich verstehe kein Beispiel? – stjernaluiht

+0

Danke für Ihre Antwort. Siehe oben den bearbeiteten Teil. – SIM

Verwandte Themen