2016-05-28 233 views
-1
import requests 
from bs4 import BeautifulSoup 

urla = 'https://www.tumblr.com/search/hello' 

r = requests.get(urla) 

soupa = BeautifulSoup(r.content, 'html.parser') 

links = soupa.find_all("div", {"class": "header_mage_wrapper has_avatar"}) 

for link in links: 

    print link 

所以在我運行此代碼後,沒有任何中斷,我得到退出代碼0(使用PyCharm),但是根本沒有輸出。沒有輸出與美麗的湯find_all

如果我拿走{「class」:「header_mage_wrapper has_avatar」}) 所以只有find_all(「div」),它工作得很好,並且拉出所有的div。我在一個不同的網站上嘗試了這個代碼,並且沒有任何問題,我確信它是一個小的,我還不知道,我只用了一兩天的BeautifulSoup,但是我找不到這是因爲沒有編碼錯誤。

謝謝!

+0

在頁面源代碼中,您將鏈接指向我無法找到'header_mage_wrapper has_avatar'。你可以檢查嗎? – minocha

+1

你是怎麼確定有這些類的div的?不是說有這樣的類,但是'header_mage_wrapper'看起來像是拼寫錯誤的'header_image_wrapper'。 –

+1

這很可能是你試圖解析javascript,需要做一些改變,正如Martijn所說 - 你可能沒有正確拼寫過類。 –

回答

0

這將提取您沒有輸出:

import requests 
from bs4 import BeautifulSoup 
urla = 'https://www.tumblr.com/search/hello' 
r = requests.get(urla) 
soup = BeautifulSoup(r.text) 

for link in soup.find_all('div', class_="header_image_wrapper has_avatar"): 
    print(link.get('class')) 

這是因爲get()不取header_image_wrapper類。 它提取的最低死者是search_blog_row

您正在尋找的header_image_wrapper是根據您的搜索動態載入。

因此,您可以嘗試POST,如here所示。

相反,我會建議使用Tumblr API來獲得結果。

+0

我認爲你是正確的API。我將學習如何使用它。 – Sweetcheeks12354

+0

@ Sweetcheeks12354很好。 –