Python beautifulsoup find_all()类快捷方式不';行不通
我正在尝试查找带有classPython beautifulsoup find_all()类快捷方式不';行不通,python,html,parsing,beautifulsoup,Python,Html,Parsing,Beautifulsoup,我正在尝试查找带有class列的所有p标记 <p class="column">This is a column</p> <p class="column">More columns heh</p> 它返回了[] 然后我试着: soup.find_all(attrs={'class': 'column'}) 得到了正确的结果 这两种说法不应该相同吗?有什么不同吗?这些陈述完全相同,我无法重现您的问题: >>> from bs4
列的所有p
标记
<p class="column">This is a column</p>
<p class="column">More columns heh</p>
它返回了[]
然后我试着:
soup.find_all(attrs={'class': 'column'})
得到了正确的结果
这两种说法不应该相同吗?有什么不同吗?这些陈述完全相同,我无法重现您的问题:
>>> 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'
>>来自bs4导入组
>>>汤=美汤(“”)
…这是一个列
…更多的列
... ''')
>>>soup.find_all(class='column')
[这是一列,
更多的列
>>>进口bs4
>>>bs4.\u版本__
'4.1.3'
请注意,class_u
参数是在版本4.1.2中引入的,因此请确保使用最新版本的BeautifulSoup。从:
从Beautiful Soup 4.1.2开始,您可以使用关键字参数class\uu
按CSS类进行搜索:
>>从bs4导入BeautifulSoup作为BS
>>>soup=BS(“”“这是一个列
更多的列
>>>list1=soup.find_all(class='column')
>>>list2=soup.find_all(attrs={'class':'column'})
>>>list1==list2
真的
没有区别。我不知道为什么它对你不起作用。也许你的BeautifulSoup模块已经过时了?我也无法重现您的问题。我有像您的帖子一样的保存情况,我发现我的CentOS python版本是2.6.6,BeautifulSoup 4.1.0,他们在帮助文档中说:
“本文档中的示例在Python 2.7和Python 3.2中的工作方式应相同。”
因此,我根据以下链接将python 2.6升级到2.7:
“”
升级完成后,汤变得很漂亮。(这是我关于堆栈溢出的第一个答案,所以我有点紧张!)
正如其他人所说,这两者完全相同。唯一的问题是,您使用的是旧版本的BeautifulSoup。
正如它所说的
在没有类快捷方式的Beauty Soup的旧版本中,您可以使用上面提到的attrs技巧。创建一个字典,其“class”的值是要搜索的字符串(或正则表达式,或任何内容)
希望有帮助 非常奇怪,我刚刚使用了您的确切代码,得到了>>汤。find_all(class='column')[]
在版本4.1.2中引入了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'
>>> 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