2017-06-24 3 views
0

Ich weiß, das ist spezifisch, aber ich freue mich auf eine Art und Weise zu finden, die folgende Website zu kratzen:BeautifulSoup: Schaben Titel von www.themoviedb.org

https://www.themoviedb.org/discover/movie?page=1

und eine Liste von Titeln der Filme.

Ich habe BeautifulSoup versucht:

from bs4 import BeautifulSoup 
import requests 

r = requests.get('https://www.themoviedb.org/discover/movie?page=1') 

soup = BeautifulSoup(r.text) 
soup 

Allerdings kann ich keine der Titel in der Ausgabe finden. Ich bin neu, aber ich frage mich, ob jemand ein Beispiel dafür geben könnte, wie Sie das machen würden?

+3

Ich schlage vor, die eingebaute API für TMDB verwenden. Siehe hier: https://www.themoviedb.org/documentation/api – David

Antwort

1

im HTML Blick scheint es, Informationen über Filme innerhalb <div> s mit der Klasse info befindet.

from bs4 import BeautifulSoup 
import requests 

r = requests.get('https://www.themoviedb.org/discover/movie?page=1') 

soup = BeautifulSoup(r.text, "html5lib") 
items = soup.find_all('div', {'class' : 'info'}) 

for item in items: 
    print(item.p.a['title']) 

Ausgang:

Split 
Miss Peregrine's Home for Peculiar Children 
Deadpool 
Captain America: Civil War 
X-Men: Apocalypse 
Fantastic Beasts and Where to Find Them 
Arrival 
Tomorrow Everything Starts 
Doctor Strange 
La La Land 
Sing 
The Great Wall 
Rogue One: A Star Wars Story 
Batman v Superman: Dawn of Justice 
Hacksaw Ridge 
Zootopia 
Inferno 
Star Trek Beyond 
Now You See Me 2 
Passengers 
0

Dies sollte man ziemlich nahe kommen:

for x in soup.find_all('div', {'class': 'item poster card'}): 
    print list(x.find_all('a')[1])