2016-11-26 2 views
0
from bs4 import BeautifulSoup 
import requests 

def imdb_spider(): 
    url = 'http://www.imdb.com/chart/top' 
    source_code = requests.get(url) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text) 
    for link in soup.findAll('a', {'class': 'secondaryInfo' }): 
     href = link.get('href') 
     print(href) 

imdb_spider() 

Я пытаюсь получить ссылки всех фильмов с высоким рейтингом от imdb. Я использую pycharm. Код работает более 30 минут, но я не получаю никакой печати в консоли.Нет вывода в консоли python

+1

, где вы получите 'source_code'? Этот код не может работать. Вы должны получить сообщение об ошибке. – furas

+1

Существует библиотека python IMDB ... http://imdbpy.sourceforge.net –

+0

где вы используете 'запросы'? Вы забыли вставить строку? –

ответ

0

Проблема в том, что {'class': 'secondaryInfo' } является параметром объекта <span>.

Так попробуйте это:

from bs4 import BeautifulSoup 
import requests 


def imdb_spider(): 
    url = 'http://www.imdb.com/chart/top' 
    source_code = requests.get(url) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, "lxml") 
    for td in soup.findAll('td', {'class': 'titleColumn'}): 
     href = td.find('a').get('href') 
     print(href) 


imdb_spider() 
1

Вы правы, что есть элемент с классом secondaryInfo для каждого названия фильма, но это не a элемента. Если вы хотите это найти, вам нужно использовать другой селектор. Например, следующий селектор выполнит трюк вместо использования soup.findAll().

soup.select('td.titleColumn a')

+0

Спасибо, это сработало :) – Avinash

+0

Отлично! Не могли бы вы принять ответ, если бы я помог? –

Смежные вопросы