爬蟲簡介
爬蟲,即網絡爬蟲,可理解爲在網絡上爬行的一直蜘蛛,互聯網就比作一張大網,而爬蟲便是在這張網上爬來爬去的蜘蛛,如果它遇到資源,那麼它就會抓取下來。
一句話形容爬蟲:一段自定抓取互聯網信息的程序
爬蟲的作用
取互聯網數據,爲我所用!
簡單爬蟲架構
運行流程
URL管理器
URL簡單介紹
URL,即統一資源定位符,也就是我們說的網址,統一資源定位符是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎麼處理它。
URL的格式由三部分組成:
- ①第一部分是協議(或稱爲服務方式)
- ②第二部分是存有該資源的主機IP地址(有時也包括端口號)
- ③第三部分是主機資源的具體地址,如目錄和文件名等
爬蟲爬取數據時必須要有一個目標的URL
纔可以獲取數據,因此,它是爬蟲獲取數據的基本依據
URL管理器
管理待抓取URL的集合和已抓取的URL集合
目的:防止重複抓取、防止循環抓取
URL管理器幾種常見實現方式
- 內存:Python 內存,
set()
- 關係數據庫:MySQL
- 緩存數據庫:Redis
網頁下載器
Python 中常用網頁下載器
- urllib(Python3)
- Requests (很強大的第三方庫)
urllib 簡單使用一
import urllib.request
# 核心方法
response = urllib.request.urlopen("http://www.baidu.com")
# 輸出請求結果
print(response.read().decode('utf-8'))
urllib 簡單使用二
import urllib.request
# 創建request
request = urllib.request.Request("http://www.baidu.com")
# 獲取相應體
response = urllib.request.urlopen(request)
# 輸出
print(response.read().decode("utf-8"))
網頁解析器
從網頁中獲取有價值數據的工具
圖例:
Python 常見網頁解析器實現
- 正則表達式:模糊匹配
- html.parser
- BeautifulSoup
實戰:通過用戶輸入詞條和數量,爬取百度百科詞條相關內容
目錄結構:
|-- Baike_spider(文件夾)
|-- spider_main.py(爬蟲調度器————程序入口,管理各個模塊)
|-- url_manager.py(URL 管理器————管理 url)
|-- html_downloader.py (網頁下載器————通過url獲取網頁內容)
|-- html_parser.py (網頁解析器————通過網頁內容解析出新的 url 和 新的內容)
|-- html_outputer.py (輸出————將獲取到的數據輸出)
用到的知識點:
- 使用 urllib 請求數據
- 使用 BeautifulSoup 解析網頁
- 使用 re 正則匹配 url 數據
- 使用 urljoin 將拼接 url
傳送門:Baike_spider