此學習筆記整理于 Ryan Mitchell Web Scraping with Python- Collecting Data from the Modern Web (2015) Chapter 1 Your first web scr
首先,需要安裝BeautifulSoup4 庫。
上面動圖里有個錯誤,在命令窗口輸入的應該是 pip install BeautifulSoup4,少了一個4.
from urllib.request import urlopen #這一步是用來加載庫的函數
from bs4 import BeautifulSoup #同上
html = urlopen("http://www.pythonscraping.com/exercises/exercise1.html") #打開這個網址
bsObj = BeautifulSoup(html.read()); #首先,讀取這個網址回復的東西,然后用BeautifulSoup 來美化它,為什么要美化,因為這樣網址發給我們的東西可以更結構化
print(bsObj.h1) #打印這個結構化的h1,什么是h1先不管,就是一個標簽,這個下面有著一些內容。以后可以根據自己需要來選取標簽。
捋一捋,打開了網址,讀取對方發送過來的東西,然后美化它!美化后相當于有了索引,就可以按圖索驥了!
如果連接不成功呢?!怎么會不成功呢?
一,如果頁面不存在
try: #事先不知道頁面是否存在
from urllib.request import urlopen
from urllib.error import HTTPError
html = urlopen("http://www.pythonscraping.com/exercises/exercise1.html")
except HTTPError as e:
print(e)
else:
print('There is a page!')
以上代碼顯示‘There is a page!’。在這里,這個頁面確存在。你也可以試一下‘http://www.pythonscraping.com/exercises/exercise3.htm’ 這個不存在,你看看返回的是什么?(HTTP Error 404: Not Found)
二,如果是服務器出現問題了,網站有問題。(這到底是咋回事我也不知道啊)
from urllib.request import urlopen
from urllib.error import URLError
try:
html = urlopen("http://www.baidu.com/")
except URLError as e:
print('cannot get access')
else:
print('the server is ok')
會返回‘the server is ok’,說明網站沒問題,頁面就不一定了。
有關于URLError 和 HTTPError的姿勢,請移步:http://cuiqingcai.com/961.html
三, 如果是我們需要的內容不存在呢?
連接上了server,就是解決了二,然后打開了網頁并返回了數據,就是解決了一,但是!如果我們需要的內容不在呢?比如,沒有這個索引(tag)。如果沒有這個tag,當我們用BeautifulSoup讀取tag下面的數據就會返回None,如果沒有這個tag,還要讀取tag下面一層tag的數據,那么就會出現AttributeError.
總結一下:
以上代碼都沒有縮進,下面我用圖片。
def 上面定義了一個函數,這個不用管。如果不會,看下面
好不容易寫完了,寫的過程自己確實學了挺多。
P.S.:沒能上車的小伙伴歡迎留言,如果我會我直接回答你!如果不會,我谷歌后回答你!如果要加我微信,不行。