2016-11-15 42 views
1

首先下一個元素我想如果你看看我的文章謝謝你。我發現很多關於如何使用BS4讀取下一個元素的帖子,但它涉及關鍵字相關的問題。如何閱讀與find_all

這裏是我的問題:我嘗試從txt.files和方式報廢數據的HTML是構建具有不同的變量類似的環境。

例如這裏的變量之一,我想提取:

(不注重到編碼/解碼部分)

number= bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data')[0].get_text().encode('ascii', 'ignore').decode(
    'ascii') 

它運作良好,但現在下一個變量我想以提取的具有完全相同的HTML生成後會出現。所以當我運行時

Local= bs.find_all('span', class_=''span', class_='grid_1 prefix_1 suffix_1 data')[0].get_text().encode('ascii', 'ignore').decode(
    'ascii') 
number= bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data')[0].get_text().encode('ascii', 'ignore').decode(
    'ascii') 

它給了我兩個變量的相同信息。我明白BS4第一次遇到findall中插入的元素時會停下來。

閱讀美麗的湯文檔後,我嘗試使用find_next命令具有對應於第二個元素中的數據。 當我運行:

Local= bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data')[0].find_all_next().encode('ascii', 'ignore').decode(
    'ascii') 

我得到以下的Python錯誤: AttributeError的:「結果集」對象有沒有屬性

,當我嘗試獨自如下運行find_next命令:

Local= bs.find_next('span', class_='grid_1 prefix_1 suffix_1 data')[0].encode('ascii', 'ignore').decode(
    'ascii') 

我得到以下Python錯誤: TypeError:'NoneType'對象沒有屬性'__getitem__'

我的問題是「如何正確地將find_next命令應用於find_all?」

回答

0

find_all()函數返回所有符合您給出class參數的span標籤:class_='grid_1 prefix_1 suffix_1 data'

所以,沒有「下一個」元素找到。你已經擁有了它。

嘗試從find_all()遍歷結果:

spans = bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data') 
for span in spans: 
    sub_text = re.sub(r'[\ \n\r]{2,}', '', span.get_text()) 
+0

謝謝您的回答我非常理解,爲什麼我有這些錯誤,但是當我運行的代碼,你提出我有以下錯誤** IndentationError:意外縮進** – Alexandre

+1

檢查您的空白格式,如果您剪切並粘貼了代碼,則可能會混合使用空格/製表符。 – jinksPadlock