簡體   English   中英

美麗的湯findAll不計算所有div

[英]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.parserhtml5lib

>>> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM