2016-11-26 132 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

有一个IMDB python库... http://imdbpy.sourceforge.net –

+0

你在哪里使用'requests'?你忘了粘贴一行吗? –

回答

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

太棒了!如果我帮忙,你能接受答案吗? –