首先介紹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常用的功能
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com