Python爬蟲系列(七):提高解析效率


如果僅僅因為想要查找文檔中的<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())

 

今天,我們的爬蟲系列基礎就算告一段落。這些,就是公司培訓新手的教程。實際上,在項目的實際過程中,還有太多坑,知識庫里面的東西后面逐步分享出來。

碼字不易,期盼點贊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM