如果僅僅因為想要查找文檔中的<a>標簽而將整片文檔進行解析,實在是浪費內存和時間.最快的方法是從一開始就把<a>標簽以外的東西都忽略掉. SoupStrainer 類可以定義文檔的某段內容,這樣搜索文檔時就不必先解析整篇文檔,只會解析在 SoupStrainer 中定義過的文檔. 創建一個 SoupStrainer 對象並作為 parse_only 參數給 BeautifulSoup 的構造方法即可
目標文檔
from bs4 import BeautifulSoup, NavigableString
from bs4 import SoupStrainer
only_a_tags = SoupStrainer("a")
only_tags_with_id_link2 = SoupStrainer(id="link2")
def is_short_string(string):
return len(string) < 6
only_short_strings = SoupStrainer(text=is_short_string)
soup = BeautifulSoup(html_doc, "lxml")
print('1------------找到所有a元素')
print(BeautifulSoup(html_doc, "html.parser", parse_only=only_a_tags).prettify())
print('2------------找到id=link2的元素')
print(BeautifulSoup(html_doc, "html.parser", parse_only=only_tags_with_id_link2).prettify())
print('3------------找到元素長度小於10的元素')
print(BeautifulSoup(html_doc, "html.parser", parse_only=only_short_strings).prettify())
今天,我們的爬蟲系列基礎就算告一段落。這些,就是公司培訓新手的教程。實際上,在項目的實際過程中,還有太多坑,知識庫里面的東西后面逐步分享出來。