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

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