5分鐘入門網絡爬蟲 - 原來可以這麼簡單易懂

爬蟲在大數據時代佔據了重要的位置,在網上有大量的公開數據可以輕鬆獲取。

爬蟲入門其實非常簡單,就算你是編程小白,也可以輕鬆爬下一些網站。下面就以爬取筆者的個人博客網站(大數據分析@唐鬆)爲例,教大家學會一個簡單的爬蟲。。一方面,由於這個網站的設計和框架不會更改,因此本書的網絡爬蟲代碼可以一直使用; 另一方面,由於這個網站由筆者擁有,因此避免了一些法律上的風險。

如果你有已經安裝了python3,pip,可以跳過下面對python,pip安裝的介紹。

安裝python3, pip, beautifulsoup

第一步:Python3安裝,請自行百度 Anaconda。這裏推薦使用 Anaconda 的 Python 科學計算環境。只需像普通軟件一樣安裝好 Anaconda,就可以把 Python 的環境變量、解釋器、開發環境等安裝在計算機中。

第二步:安裝pip,pip是按照python各種包的工具,有了它安裝python的各種包都很方便。如果你安裝了 Anaconda,那麼恭喜你,它已經自帶了 pip 不用單獨安裝了。

如果不使用 Anaconda 安裝 Python,需要單獨裝 pip,可以借鑑這篇文章:https://www.tuicool.com/articles/eiM3Er3/

第三步:有了pip,就可以安裝beautifulsoup了。這個包可以很好地從網頁代碼中提取想要的數據。安裝方法: 在 terminal (MacOS) 或是 cmd (Windows)中鍵入

pip install bs4

第四步:選一個python編譯器來跑程序。爲了代碼的調試方便,可以直接用 Anaconda 中的 jupyter。使用方法:在 terminal (MacOS) 或是 cmd (Windows)中鍵入

jupyter notebook

第一步:獲取頁面

#!/usr/bin/python
# coding: utf-8

import requests
link = "http://www.santostang.com/"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} 
r = requests.get(link, headers= headers

print (r.text)

上述代碼獲取了博客首頁的網頁HTML代碼。首先import requests,使用requests.get(link, headers=headers)獲取了網頁。值得注意的是:

  1. 用requests的headers可以僞裝成瀏覽器訪問
  2. r是requests的Response回覆對象,我們從中可以獲取我們想要的信息。r.text是獲取的網頁內容代碼。

運行完上述代碼後,我們得到的結果是:
這裏寫圖片描述

第二步:提取需要的數據

#!/usr/bin/python
# coding: utf-8

import requests
from bs4 import BeautifulSoup     #從bs4這個庫中導入BeautifulSoup

link = "http://www.santostang.com/"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} 
r = requests.get(link, headers= headers)

soup = BeautifulSoup(r.text, "lxml")      #使用BeautifulSoup解析這段代碼
title = soup.find("h1", class_="post-title").a.text.strip()
print (title)

在獲取到整個頁面的HTML代碼後,我們需要從整個網頁中提取第一篇文章的標題。

這裏用到beautifulsoup這個庫了對爬下來的頁面進行解析,首先我們需要導入這個庫,from bs4 import BeautifulSoup。然後,把HTML代碼轉化爲soup對象,接下來就是用soup.find(“h1”,class_=”post-title”).a.text.strip(),得到第一篇文章的標題,並且打印出來。

對初學者來說,beautifulsoup從網頁中提取需要的數據,更加簡單易用。

那麼,我們是怎麼從那麼長的代碼中準確找到標題的位置呢?

這裏就要隆重介紹Chrome瀏覽器的“檢查(審查元素)”功能了。下面介紹一下找到需要元素的步驟:

步驟一:使用Chrome瀏覽器,打開博客首頁http://www.santostang.com。右鍵網頁頁面,在彈出的對話框中,點擊“檢查”選項。
這裏寫圖片描述

步驟二:出現如下圖所示的審查元素功能。點擊左上角的鼠標鍵,然後在頁面上點擊想要的數據,下面的Elements就會出現相應的code所在的地方,就定位到你想要的元素了。
這裏寫圖片描述

步驟三:在代碼中找到標藍色的地方,爲”h1 class=”post-title”> a>echarts學習筆記(2) – 同一頁面多圖表/a>”。於是,我們可以用soup.find(“h1”,class_=”post-title”).a.text.strip()提取出該博文的標題了。

第三步:儲存數據

import requests
from bs4 import BeautifulSoup   #從bs4這個庫中導入BeautifulSoup

link = "http://www.santostang.com/"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} 
r = requests.get(link, headers= headers)

soup = BeautifulSoup(r.text, "lxml")   #使用BeautifulSoup解析這段代碼
title = soup.find("h1", class_="post-title").a.text.strip()
print (title)

with open('title.txt', "a+") as f:
    f.write(title)
    f.close()

儲存到本地的txt文件也非常簡單,在第二步的基礎上,加上三行代碼,就可以把這個字符串,保存在text裏,並存到本地。txt文件地址應該和你的python文件在同一文件夾。

返回文件夾中,打開’title.txt’文件,可以看到裏面的內容,如下圖所示:
這裏寫圖片描述

一波硬廣:

本文節選自圖書《Python 網絡爬蟲:從入門到實踐》第二章:編寫你的第一個爬蟲,由機械工業出版社出版。

本書主要分爲三部分:基礎部分(第1~6章)、進階部分(第7~12章)和項目實踐部分(第13~16章),以此來針對不同類型的讀者。如果你是Python爬蟲的初學者,那麼可以先學習基礎部分,這部分每一章的最後都有自我實踐題,讀者可以通過實踐題熟悉編寫Python爬蟲代碼。如果你已經對Python爬蟲有所瞭解,但是在實踐中遇到了各種問題,那麼可以直接學習進階部分,這部分爲你在爬蟲實踐中遇到的問題提供瞭解決方案。本書最後的項目實踐部分是讓你在學習Python爬蟲後,可以通過在真實網站中練習來消化和吸收Python爬蟲的知識。

這本書相對網絡上的學習比較系統化,希望大家能支持!

京東鏈接《Python網絡爬蟲從入門到實踐》(唐鬆,陳智銓)【摘要 書評 試讀】- 京東圖書

噹噹鏈接《Python網絡爬蟲從入門到實踐》(唐鬆 陳智銓)【簡介書評在線閱讀】 - 噹噹圖書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章