Это должно работать:
import requests
from bs4 import BeautifulSoup
import csv
with open("movie-names.csv", "w") as f:
writer = csv.writer(f)
writer.writerow(['Title', 'Genre'])
pages = []
genre = []
for i in range(1,2):
url = 'http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012'
pages.append(url)
for item in pages:
page = requests.get(item)
soup = BeautifulSoup(page.text, 'html.parser')
movie_titles = soup.find_all(class_ = 'lister-item-content')
for movie_title in movie_titles:
title = movie_title.find('a').contents[0]
genre = movie_title.find_all(class_ = 'genre')[0].get_text()
print(title, genre)
writer.writerow([title, genre])
Это выдержка из содержимого в .csv Я запускаю код:
Title Genre
The Shawshank Redemption Drama
The Dark Knight Action, Crime, Drama
Inception Action, Adventure, Sci-Fi
Fight Club Drama
Pulp Fiction Crime, Drama
Forrest Gump Drama, Romance
Обратите внимание, что это для цикла:
for i in range(1,2):
url = 'http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012'
pages.append(url)
будет бесполезным, так как в этом случае добавьте только один URL. В общем случае, когда 2
равен n
, он добавляет к тому же url n-1
раз. Это твое намерение?