[英]Beautiful Soup findAll not counting all divs
from bs4 import BeautifulSoup
html = 'index.html'
soup = BeautifulSoup(open(html))
print len(soup.findAll('div'))
其中index.html
文件是此購物網頁的源代碼。
我的代碼顯示僅找到1個div
標簽。 但是奇怪的是findAll('a')
返回一個巨大的(所以可能是正確的)數字。 span
工程等,但不是div
。
您正在體驗BeautifulSoup
在后台使用的解析器之間的差異 。
選擇html.parser
或html5lib
:
>>> from bs4 import BeautifulSoup
>>> html = 'index.html'
>>> soup = BeautifulSoup(open(html), 'html')
>>> len(soup.findAll('div'))
0
>>> soup = BeautifulSoup(open(html), 'lxml')
>>> len(soup.findAll('div'))
0
>>> soup = BeautifulSoup(open(html), 'html.parser')
>>> len(soup.findAll('div'))
774
>>> soup = BeautifulSoup(open(html), 'html5lib')
>>> Alen(soup.findAll('div'))
774
請注意,如果您未指定解析器 , BeautifulSoup
會自動將其拾取:
如果不指定任何內容,則將獲得已安裝的最佳HTML解析器。 Beautiful Soup將lxml的解析器評為最佳,然后是html5lib的解析器,然后是Python的內置解析器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.