BeautifulSoup的安裝和使用

Python用作數據處理仍是至關不錯的,若是你想要作爬蟲,python是很好的選擇,它有不少已經寫好的類包,只要調用,便可完成不少複雜的功能,此文中全部的功能都是基於BeautifulSoup這個包。html

1、          BeautifulSoup的安裝 python

 

 

 

 

1.器中搜索beautifulsoup ,進入beautifulsoup的文檔所在網站,是英文的,不過能夠轉換成的中文。網絡

 

2.如圖所示的超連接。進入下一頁。點擊下載,進行下載。學習

 

 

3.擊beautifulsoup 4.3.2,這是目前的最新版本。網站

四、在這一頁,找到這個文件夾,點擊進入。編碼

五、選擇這個超連接下載。url

 

 

六、下載完成以後,進行解壓。建議放在Python的安裝目錄。這樣比較好找。spa

七、從解壓後的文件夾,在路徑目錄處輸入cmd進入DOS模式,輸入:python setup.py install進行手動安裝.net

注意:除了上述的安裝方法也能夠進行自動安裝,找到pip.exe所在的目錄,進入DOS系統,輸入pip install BeautifulSoup43d

2、          BeautifulSoup的使用

1. 首先創構造一個BeautifulSoup對象

下面有一些最簡單的例子:

1)經過字符串建立BeautifulSoup對象

from bs4 import BeautifulSoup
helloworld = '<p>Hello World</p>'
soup_string = BeautifulSoup(helloworld, "html.parser")
print(soup_string)
# 返回結果:
# <p>Hello World</p>

2)經過類文件對象建立BeautifulSoup對象

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://www.baidu.com"
page =urlopen(url)
soup = BeautifulSoup(page,"html.parser")
print(soup)
返回結果:

注意:由於前面說的Urllib庫用urlopen()返回的就是一個類文件對象,因此這裏的結果和以前Urllib中對象調用read()獲得的結果是同樣的。

3)經過本地文件對象建立BeautifulSoup對象

 

from bs4 import BeautifulSoup

with open('index.html','r',encoding='utf-8') as foo_file :
    soup_foo = BeautifulSoup(foo_file, "html.parser")
    print (soup_foo)

返回結果:

注意:index.html文件要存在,而且要根據狀況定義字符編碼encoding

 

2. 獲取網頁中想要的內容(先要得到網頁源代碼,再分析網頁源代碼,找所對應的標籤,而後提取出標籤中的內容)

網址是http://movie.douban.com/top250?format=text,進入網址後就出現以下的圖:

如今我須要得到當前頁面的全部電影的名字,評分,評價人數,連接

  由上圖畫紅色圓圈的是我想獲得的內容,畫藍色橫線的爲所對應的標籤,這樣就分析完了,如今就是寫代碼實現,Python提供了不少種方法去得到想要的內容,在此我使用BeautifulSoup來實現,很是的簡單: 

from urllib.request import urlopen
from bs4 import BeautifulSoup
from distutils.filelist import findall
page = urlopen('http://movie.douban.com/top250?format=text')
contents = page.read() # print(contents) 顯示網絡中的內容,格式是字節
soup = BeautifulSoup(contents,"html.parser") #print(soup)以html的格式顯示內容
print("豆瓣電影TOP250" + "\n" +" 影片名 評分 評價人數 連接 ") #標題
for tag in soup.find_all('div', class_='info'): # print tag
m_name = tag.find('span', class_='title').get_text()
m_rating_score = float(tag.find('span',class_='rating_num').get_text())
m_people = tag.find('div',class_="star")
m_span = m_people.findAll('span')
m_peoplecount = m_span[3].contents[0]
m_url=tag.find('a').get('href')
print( m_name+" " + str(m_rating_score) + " " + m_peoplecount + " " + m_url )

 

控制檯輸出結果以下,你也能夠寫入文件中

  前三行代碼得到整個網頁的源代碼,以後開始使用BeautifulSoup進行標籤分析,find_all方法是找到全部此標籤的內容,而後在在此標籤中繼續尋找,若是標籤有特殊的屬性聲明則一步就能找出來,若是沒有特殊的屬性聲明就像此圖中的評價人數前面的標籤只有一個‘span’那麼就找到全部的span標籤,按順序從中選相對應的,在此圖中是第三個,因此這種方法能夠找特定行或列的內容。代碼比較簡單,很容易就實現了,若是有什麼地方不對,還請你們指出,你們共同窗習

相關文章
相關標籤/搜索