- 《零基礎自學用Python 3開發網路爬蟲(一)》
- 《零基礎自學用Python 3開發網路爬蟲(二)》
- 《零基礎自學用Python 3開發網路爬蟲(三)》
- 《零基礎自學用Python 3開發網路爬蟲(四)》
在前面的四篇文章中, 我們一直採用 python 3 自帶的 urllib 模組來抓取網頁, 然後用 re 模組來處理抓取到的資料. 這次我們使用 Requests 庫來代替 urllib, 用 BeautifulSoup 來代替 re 模組.
對於這兩個模組來說, 學習使用它們的最好方法是看官方文件, 這兩個模組的官方文件都有中文版(翻譯的不是很完整).
在 Windows 下如果安裝了 Python3, 那麼在 cmd 下直接可以通過 pip 來安裝這兩個模組, 命令如下:
1 2 |
pip install requests pip install beautifulsoup4 |
在 Ubuntu 下安裝方法如下:
1 2 3 |
sudo apt-get install python3-pip sudo pip3 install requests sudo pip3 install beautifulsoup4 |
然後我們執行 Python3, 試一下是否能把這兩個模組 import 進來, 就知道是否安裝成功了:
1 2 3 4 5 6 |
C:\Users\Liu>python Python 3.4.2 (v3.4.2:ab2c023a9432, Oc Type "help", "copyright", "credits" o >>> import requests >>> from bs4 import BeautifulSoup >>> |
Requests Module
Requests 是 Python 界大名鼎鼎的一個網路庫, 其設計哲學是為人類而設計, 所以他提供的功能都非常的人性化. 他的方便對我而言主要有兩大點:
- 對 GET 和 POST 方法的封裝做的很好, 自動處理了編碼等問題;
- 預設開啟了 Cookies 處理, 在處理需要登入的問題上面非常方便.
Requests 的方便之處不止這兩點, 還提供了諸如標準登入介面之類的功能, 我們暫時用不上.
總而言之, 對於使用過 urllib 的我們來說, 用 requests 會感覺我們之前生活在石器時代. 第三方庫的強大就在於這裡, 這也是 Python 這麼火的重要原因.
BeautifulSoup Module
BeautifulSoup 大大方便了我們對抓取的 HTML 資料的解析, 可以用tag, class, id來定位我們想要的東西, 可以直接提取出正文資訊, 可以全文搜尋, 同樣也支援正規表示式, 相當給力.
小試牛刀
我們隨便抓取一個頁面, 然後用 soup 來解析一下試試他的威力:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
>>> import requests >>> from bs4 import BeautifulSoup >>> response = requests.get("http://jecvay.com") >>> soup = BeautifulSoup(response.text) >>> print(soup.title.text) Jecvay Notes - Good luck & Have fun >>> print(soup.body.text) 改版策略: 技術部落格的真正索引 上週, 我換掉了我部落格的主題, 使用 BootStrap 框架自己寫了一個. 在自己動手寫部落格主題之前, 我時常時不時到後臺主題商店去翻一翻, 想要發現更好看的主題. 挑選有兩種: 在一大堆展示面前, 快速瀏覽, 看到亮眼的就仔細看一看是否滿意; 自己想好一個目標, 然後用篩選器(或者人肉)篩選出來. 閱讀全文 >> (...省略若干) >>> for x in soup.findAll("a"): ... print(x['href']) ... http://jecvay.com/2015/02/the-real-index-of-tech-blog.html http://jecvay.com/2015/02/the-real-index-of-tech-blog.html http://jecvay.com/2015/01/wordpress-super-cache.html http://jecvay.com/2015/01/learning-vps-3.html http://jecvay.com/2015/01/nobot-anti-webspider.html http://jecvay.com/2015/01/learning-vps-2.html http://jecvay.com/2014/12/learning-vps-1.html http://jecvay.com/2014/11/what-is-min-cut.html http://jecvay.com/2014/11/compiler-makes-fast-build.html /about-me /archive |
我們十分輕鬆的獲得了全文內容以及所有連結.
重訪知乎
在上一篇文章中, 我嘗試使用 urllib 和 re 獲取了知乎登入頁面的 _xsrf 引數, 這次我們通過這兩個新的模組再試一次.
開啟瀏覽器隱身模式, 開啟知乎網, 來到登入介面, 檢視原始碼, 搜尋 xsrf 字樣, 得到如下一行:
1 |
<input type="hidden" name="_xsrf" value="d4ff8d988193442a774bd0ccff336101"/> |
於是我們只要兩行程式碼就能搞定:
1 2 3 |
>>> soup = BeautifulSoup(requests.get("http://www.zhihu.com").text) >>> print(soup.find("input", {"name": "_xsrf"})['value']) d4ff8d18b293442a764bd0ccff333601 |
第三方庫就是這麼好用!