的問題是,在find()
返回單個元素(一Tag
實例)也可以是迭代 - 你會遍歷其子元素。而且,由於只有一個孩子 - 一個文本節點,所以@Dekel的答案會起作用。
但是,你並不真正需要的for
循環,可以直接獲取文本簡單:
page = soup.find("div", {"class":"listing-count-label listing-count-holder listing-count-holder-header"})
print(page.get_text())
而且,你並不真的需要列出一個元素的所有類找到它,你可以使用一個單一的一個:
soup.find("div", class_="listing-count-label")
或者,用CSS selector:
soup.select_one("div.listing-count-label")
但是,既然你是最多頁數,我們爲什麼不使用regular expression文本查找元素 - 而且,我們將使用相同的正則表達式來提取頁面計數:
>>> import re
>>> from bs4 import BeautifulSoup
>>>
>>> data = """<div class="listing-count-label listing-count-holder listing-count-holder-header">8007 listings, showing 1 to 156</div>"""
>>>
>>> pattern = re.compile(r"\d+ listings, showing \d+ to (\d+)")
>>>
>>> soup = BeautifulSoup(data, "html.parser")
>>>
>>> pattern.search(soup.find(text=pattern)).group(1)
u'156'
而且,您可以使用int()
將其轉換爲整數。但是,這段代碼缺少錯誤處理 - 事情可能會出錯 - 確保正確處理錯誤。
'x.text.split(」「)[ - 1]'會給你的網頁沒有。 – user902384