Python中到底有哪些
Python常用庫會讓程式員愛不釋手?以至於一次上癮,今天我們就來整理一番這樣的
Python常用庫,歡迎各位在評論區或者私信我添加或者修改相關庫內容。
首先介紹beautifulsoup這個庫,因為最開始接觸爬蟲的時候,就看到大家強力推薦這個庫。後來用了下,覺著確實不錯。但是程式員嘛,哪能在一個庫裡悶死,哈哈。
幾個庫的安裝過程就不再累述,參考anaconda。-_-.
後面幾個執行個體,均用這個來測試。
html = """<html><head><title>The Dormouse's story</title></head><body><p class="myclass" name="dromouse"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were<a href="http://example.com/elsie" class="myclass" id="box"><!-- Elsie --></a>,<a href="http://example.com/lacie" class="myclass" id="box1">Lacie</a> and<a href="http://example.com/tillie" class="myclass" id="box2">Tillie</a>;and they lived at the bottom of a well.</p><p class="story">...</p>"""
BeautifulSoup
Beautiful Soup支援Python標準庫中的HTML解析器,還支援一些第三方的解析器。例如lxml HTML,lxml XML,html5lib。不過要安裝這些庫,否則它會使用python的內部標準庫。
beautifulsoup的對象建立有兩種方式。
1. soup=BeautifulSoup(html) #用變數內容來建立
2. soup=BeautifulSoup('mysite.html') #用本地檔案來建立
BeautifulSoup是將HTML轉化為一個複雜的樹形結構,每個節點都是python對象,有前端基礎的同學會知道,類似DOM對象。BeautifulSoup中的對象大致有四種,Tag、NavigableString、BeautifulSoup、Comment。由於我們平時操作大多數是針對一個個標籤提取資訊,所以我簡略的敘述下常用到的Tag對象。
Tag
tag就是HTML的一個個標籤。
例如HTML中的 head,title,a,p等等。
在實際操作中,我們會將所需要的標籤通過選取器尋找出來,然後通過操作Tag對象來擷取所需資訊。在BeautifulSoup中,常用的findAll()和find()來搜尋文檔樹來擷取自己所需的標籤。同時,BeautifulSoup也支援CSS文法來搜尋,select()方法,返回的類型是list。
ps:
1.findAll()等同於find_all()
2.對前端比較瞭解的,用select()方法比較順手。
find()
find()相當於findAll()中limit=1的時候,不過find()返回的是結果,findAll()返回的是一個列表。
CSS選取器
beautifulsoup支援CSS文法的選取器來尋找所需要的標籤。
select(CSS選取器)例:soup.select('.myclass #box')#後代選取器soup.select('head>title')#子選取器soup.select('div+p')#相鄰兄弟選取器soup.select('div~p’)#後續兄弟選取器
同時還可以加入屬性尋找。
soup.select('.myclass a[id="box"]')
select()方法返回的是列表形式。
以上差不多就是BeautifulSoup常用的功能