![](/img/trans.png)
[英]Web scraping BeautifulSoup find_all doesn't work on APEC
[英]beautifulsoup find_all() class shortcut doesn't work
我正在嘗試使用class column
查找所有p
標簽。
<p class="column">This is a column</p>
<p class="column">More columns heh</p>
我試着做:
soup.find_all(class_='column')
返回了[]
然后我嘗試了:
soup.find_all(attrs={'class': 'column'})
並得到正確的結果。
這兩個陳述不應該相同嗎? 有什么不同?
(這是我對堆棧溢出的第一個答案,所以我有點緊張!)
正如其他人所說,這兩個完全相同。 唯一的問題是您正在使用舊版本的Beautiful Soup。 因為它說這里 。
在沒有class_快捷方式的較早版本的Beautiful Soup中,您可以使用上面提到的attrs技巧。 創建一個字典,其“ class”的值是您要搜索的字符串(或正則表達式,或其他)。
希望能有所幫助!
該聲明是完全相同的,我無法重現您的問題:
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''<div>
... <p class="column">This is a column</p>
... <p class="column">More columns heh</p>
... </div>''')
>>> soup.find_all(class_='column')
[<p class="column">This is a column</p>, <p class="column">More columns heh</p>]
>>> import bs4
>>> bs4.__version__
'4.1.3'
請注意, class_
參數是在版本4.1.2中引入的,因此請確保您使用的是BeautifulSoup的最新版本。 在“ 按CSS類搜索”部分中 :
從Beautiful Soup 4.1.2開始,您可以使用關鍵字參數
class_
通過CSS類進行搜索:
>>> from bs4 import BeautifulSoup as BS
>>> soup = BS('''<p class="column">This is a column</p>
<p class="column">More columns heh</p>''')
>>> list1 = soup.find_all(class_='column')
>>> list2 = soup.find_all(attrs={'class': 'column'})
>>> list1 == list2
True
沒有區別 我不確定為什么它對您不起作用。 也許您的BeautifulSoup模塊已經過時了? 我也無法重現您的問題。
我的保存情況就像您的帖子一樣,我發現我的CentOS python版本是2.6.6,而BeautifulSoup 4.1.0他們在幫助文檔中說:
“本文檔中的示例在Python 2.7和Python 3.2中應以相同的方式工作。”
因此,根據此鏈接,我將python 2.6升級到2.7:
“ http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/ ”
升級完成后,湯變得很美。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.