手把手帶你進入爬蟲的世界,打好基礎,走的更遠
- 2021 年 10 月 24 日
- 筆記
您好,我是碼農飛哥,感謝您閱讀本文,歡迎一鍵三連哦。
本文是爬蟲專欄的第一篇,重點介紹爬蟲的基本概念,提供一個爬蟲的標準步驟。
乾貨滿滿,建議收藏,需要用到時常看看。 小夥伴們如有問題及需要,歡迎踴躍留言哦~ ~ ~。
前言(為什麼寫這篇文章)
本文是爬蟲專欄的第一篇,這裡默認你已經掌握了Python的基礎。如果您還沒來得及看Python基礎的話,請你抽出時間看下【Python從入門到精通】(二十八)五萬六千字對Python基礎知識做一個了結吧!【值得收藏】
本文主要解答如下幾個問題:
- 什麼是爬蟲?
- 為什麼要學爬蟲?
- 怎麼進行爬蟲?
最後會展示一個簡單的爬蟲的實例教大家加深印象。
什麼是爬蟲
爬蟲顧名思義就是通過技術手段獲取網站上的公開數據,並將這些非結構化的數據解析成結構化的數據保存起來。
舉個🌰 打開碼農飛哥的博客主頁 可以看到如圖1的結果:
如果我們想將圖中文章的標題,簡介拉取到本地並保存下來本地就需要用到爬蟲技術。
為什麼要學爬蟲
網絡上有海量的公開數據,比如我們每天看到的各種新聞數據,看到的各種學習博客都是公開的,可以獲取的數據,如果將這些數據爬取下來進行數據分析就可以對構建用戶畫像,從而對每個用戶進行個性化的推薦。今日某條早期就是一個通過爬蟲程序獲取其他網站的新聞數據,從而獲取海量數據的。
總之,爬蟲很有用,用處大大的。
其實很多語言都可以實現編寫爬蟲程序,比如Java,php,Python,但是我們這裡選擇Python語言作為爬蟲的首選語言是因為
語言 | 優勢 | 缺點 |
---|---|---|
Java | 語言強大,支持複雜的爬蟲場景,並發性能強 ,生態完善 | 代碼臃腫,需要編寫很多代碼 |
php | 語法簡單,可以直接操作頁面,生態不好 | 複雜的場景不支持 |
Python | 語法簡單,編寫代碼少,生態完善,支持複雜的爬蟲場景 | 暫時沒發現 |
綜上所述就選擇用Python編寫爬蟲程序。
學習爬蟲所需要的預備知識
會利用瀏覽器查看網頁
我們都知道網頁是通過超文本標記語言Html語言渲染出來的,Html通過一系列的標籤和樣式將網頁內容渲染出來。但是這些這些標籤是我們爬蟲不需要的,所以我們首先需要找到我們想要爬取的內容在哪個標籤里從而進行爬蟲。 這裡用Chrom瀏覽器做一個說明。
- 選中網頁—》右鍵—》檢查 即可調出Chrome的調試窗口,如下圖2所示。
其中:- Elements模塊展示了頁面的元素,說白了就是展示當前頁面的完整html代碼, 可以查看頁面的樣式以及每個文本被包含在那個元素中。如果要查看頁面中的某個元素,只需要選中
這個圖標,然後將焦點放在你需要查看的文本處就可以查看文本在哪個標籤中了,就像下圖3所示:
這裡我們的文章標題被保存到了<a></a>
標籤中,文章摘要被保存在了<p class="content"></p>
標籤中。- Console 模塊是控制台窗口,可以在該窗口下編寫一些簡單的代碼並查看輸出結果,就像下面比較a和b的大小
- Console 模塊是控制台窗口,可以在該窗口下編寫一些簡單的代碼並查看輸出結果,就像下面比較a和b的大小
- Elements模塊展示了頁面的元素,說白了就是展示當前頁面的完整html代碼, 可以查看頁面的樣式以及每個文本被包含在那個元素中。如果要查看頁面中的某個元素,只需要選中
- Sources 模塊展示了該頁面所涉及的所有源代碼文件。包括了html文件,js文件以及css文件等等,我們可以在該窗口進行調試。
- Network 模塊展示了頁面的所有請求,包括數據的請求,圖片的請求等等,選中其中一個請求就可以看到該請求的詳細信息,包括請求頭,響應頭,響應結果等等。
這裡需要重點關注 accept ,cookie,user-agent 等參數。其中accept參數指定了該請求所接受的請求數據格式,cookie保存了瀏覽器的緩存,user-agent 可以理解為通行證。 - Application 模塊主要是展示本次存儲,Session存儲,以及Cookies等。
怎麼爬蟲程序
編寫爬蟲程序分為三步:
- 利用 urllib庫或者requests 庫獲取網頁源碼
- 利用BeautifulSoup4以及正則表達式解析源碼
- 利用xls 、MySQL 、MongoDB等存儲介質來存儲數據
下面就以碼農飛哥的博客首頁為例,爬取首頁的所有文章的標題和概況
0. 依賴庫的安裝
安裝requests庫
pip install requests
安裝beautifulsoup4庫
自動安裝的話可以直接通過
pip install beautifulsoup4 -i //pypi.douban.com/simple
命令進行安裝。如果安裝失敗的可以手動安裝
手動安裝就是先把beautifulsoup4-4.6.0-py3-none-any.whl 下載下來,我已經放在了源碼中,然後執行:
pip install beautifulsoup4-4.6.0-py3-none-any.whl
安裝與你Python版本相容的lxml庫
這裡還需要安裝lxml庫,lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的數據。它是一款高性能的python HTML、XML解析器,也可以利用XPath語法,來定位特定的元素及節點信息。
pip install lxml -i //pypi.douban.com/simple
如果不安裝的話你可能會喜提如下圖所示的bug
安裝pandas庫
- 安裝pandas庫首先需要在電腦中安裝anaconda。anaconda下載地址。安裝之後就是簡單的安裝了,在此就不在贅述了。
- 安裝matplotlib庫和pandas庫
pip install matplotlib
pip install pandas
將所必須的庫安裝好之後就是樸實無華的編碼過程了。
1.利用requests 庫獲取網頁源碼(就是前面說的那個html文件)
import requests
r = requests.get('//feige.blog.csdn.net/')
r.encoding = 'utf-8'
通過requests.get方法就可以獲取網頁的源碼,通過r.encoding 將源碼的編碼格式設置為utf-8
。
2. 利用beautifulsoup4解析源碼數據
這裡我們的文章標題被保存到了 <a></a>
標籤中,文章摘要被保存在了 <p class="content"></p>
標籤中。所以我們需要對這兩個標籤進行解析。
# 使用BeautifulSoup解析數據
soup = BeautifulSoup(r.text, 'lxml')
# 獲取所有的摘要
pattern = soup.find_all('p', 'content')
content = []
# 循環遍歷內容
for i, item in enumerate(pattern):
content.append(item.string)
3. 利用pandas庫來保存數據
df = pandas.DataFrame(content)
df.to_csv('content.csv')
將數據保存到conten.csv 文件中。
完整的源代碼
import requests
from bs4 import BeautifulSoup
import pandas
# 使用request抓取數據
r = requests.get('//feige.blog.csdn.net/')
r.encoding = 'utf-8'
# 使用BeautifulSoup解析數據
soup = BeautifulSoup(r.text, 'lxml')
# 獲取所有的摘要
pattern = soup.find_all('p', 'content')
content = []
# 循環遍歷內容
for i, item in enumerate(pattern):
content.append(item.string)
df = pandas.DataFrame(content)
df.to_csv('content.csv')
總結
本文詳細介紹了Python的爬蟲入門的基礎知識,讓我們一起學起來。
全網同名【碼農飛哥】。不積跬步,無以至千里,享受分享的快樂
我是碼農飛哥,再次感謝您讀完本文。