【1】爬蟲學習

一直想學爬蟲,也是由於種種原因吧,沒能系統地學習。正好最近在大工pt上看到了爬蟲的系統教程,全下載下來,學習並在博客上記錄一下。因爲我是一個比較懶的人,對於自動化的技術非常着迷,只要能讓機器來做,就不需要用人是我一直以來的執念。所以我對機器學習以及其分支-深度學習,爬蟲非常着迷。

本文分爲兩個部分來寫:爬蟲簡介,爬蟲前期準備工作

爬蟲簡介

爬蟲本質上來說是一種按照一定規則,自動地抓取萬維網信息的腳本。網絡抓取的策略可以分爲深度優先、廣度優先和最佳優先三種。深度優先在很多情況下會導致trapped的問題。

  • 最佳優先搜索策略

    最佳優先搜索策略按照一定的網頁分析算法,預測候選URL與目標網頁的相似度,或與主題的相關性,並選取評價最好的一個或幾個URL進行抓取。這是一種局部最優的搜索蘇凡

爬蟲的組成部分:

  • 控制器:主要是負責給多線程中的各個爬蟲線程分配工作任務
  • 解析器:主要是下載網頁,進行頁面處理,將一些JS腳本標籤、CSS代碼內容、空格字符、HTML標籤處理掉
  • 資源庫:用來存放下載到的網頁資源,一般使用數據庫進行存儲

爬蟲工作的基本流程:

  • 發起請求:通過HTTP庫向目標站點發起請求,即發送一個Request,請求包含額外的headers等信息,等待服務器響應。
  • 獲取響應內容:如果服務器能正常響應,會得到一個Response,Response的內容就是所要獲取的頁面內容,類型可能有HTML,JSon字符串,二進制數據(如圖片,視頻)等類型
  • 解析內容:得到的內容可能是HTML,可以用正則表達式,網頁解析庫進行解析。可能是JSon,可以直接轉爲JSon對象解析,可能是二進制數據,可以保存或者進一步處理
  • 保存數據:保存至數據庫,或者保存特定格式的文件。

名詞解釋:

  • Request和Response:

  • 瀏覽器發送信息給信息給網址所在服務器,這個過程叫做HTTP Request

  • 服務器收到瀏覽器發送的信息之後,能夠根據瀏覽器發送信息的內容作出相應的處理,然後把消息回傳給瀏覽器,這個過程叫做HTTP Response

  • 瀏覽器收到服務器的Response信息之後,會對信息進行相應的處理,然後顯示

  • Request包含的信息:

  • 請求方式:主要有GET,POST兩種類型,另外還有HEAD,DELETE,OPTIONS等

  • 請求URL:URL(統一資源定位符),如一個網頁文檔,一張圖片,一個視頻等都可以用URL唯一確定。

  • 請求頭:包含請求時的頭部信息,如User-Agent,Host,Cookies等信息

  • 請求體:請求額外攜帶的信息

  • Response包含的信息:

  • 響應狀態:有多種響應狀態,如200代表成功,301代表跳轉,404代表找不到頁面,502代表服務器錯誤

  • 響應頭:如內容類型,內容長度,服務器信息,設置Cookie等

  • 響應體:最主要的部分,包含請求資源的內容,如網頁HTML,圖片二進制數據等

  • 網頁解析方式:

  • 直接處理

  • JSon解析

  • 正則表達式

  • BeautifulSoup

  • XPath

  • PyQuery

  • 解決JavaScript渲染問題

  • 分析Ajax請求

  • selenium/WebDriver

  • Splash

  • PyV8,Ghost.py

前期準備工作

主要分爲三個部分進行,python的安裝,數據庫的安裝,爬蟲常用庫的安裝

  1. python的安裝:採用anaconda進行,anaconda相當於是一個肯德基全家桶,一次性安裝python和相關的庫

    注意點:

    如果你的電腦裏有python2,python3,會面臨python衝突的問題。需要將python.exe的名稱,然後將其所在文件夾添加到環境變量。

  2. 數據庫的安裝

  • 非關係型數據庫MongoDB安裝:

    • 谷歌搜索MongoDB,下載安裝MongoDB
    • 在MongoDB根目錄下,創建data文件夾,然後在data文件夾裏面新建db文件夾
    • 在bin文件夾下,打開命令行,輸入’mongod --dbpath bin文件夾’
    • 然後在data文件夾下新建logs文件夾,並在logs文件夾下新建mongo.log文件(這是一個日誌文件)
    • 然後在這個logs文件夾下,打開命令行,輸入’mongod --bind_ip 0.0.0.0 --logpath log文件的路徑(包括文件名) --logappend --dbpath db文件夾 --port 27017 --serviceName “MongoDB” --serviceplayName “MongoDB” --install’
    • 然後可以在計算機管理器中將mongoDB打開
    • 下載Robomongo(這是MongoDB的可視化界面)
  • Redis安裝

    • Redis是一個開源的,內存中的數據結構存儲系統,可以用來用作數據庫、緩存和信息中間件。
    • 在github上下載Redis desktop安裝數據庫可視化界面
    • 用於維護非關係數據爬取
  • MySQL的安裝

  1. 爬蟲常用庫的安裝
  • Requests庫詳解 {requestsurllib,Apache2 licensedHTTPpip install requests\begin{cases}概念:requests基於urllib,採用\text{Apache2 licensed}開源協議的HTTP庫 \\ 安裝:\text{pip install requests} \end{cases}

  • Scrapy安裝詳解{pythonwebwebanaconda便conda install Scrapy\begin{cases}概念:python開發的一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化數據 \\ 安裝:通過anaconda進行安裝是最方便的 :\text{conda install Scrapy} \end{cases}

  • BeautifulSoup安裝詳解{pip install beautifulsoup4\begin{cases}概念:從網頁抓取數據,可以出來導航,搜索,修改分樹的功能 \\ 安裝:\text{pip install beautifulsoup4} \end{cases}​

  • Selenium安裝詳解{Selenium便便Webpip install selenium\begin{cases}概念:自動化測試工具。如果你在這些瀏覽器裏面安裝一個 Selenium 的插件,那麼便可以方便地實現Web界面的測試 \\ 安裝:\text{pip install selenium} \end{cases}

  • PhantomJs安裝詳解{phantomJsexe\begin{cases}概念:沒有界面的瀏覽器,可以在後檯安靜地運行 \\ 安裝:下載phantomJs,然後解壓,將exe文件路徑放到環境變量裏面 \end{cases}

  • lxml安裝詳解{pip install lxml\begin{cases}概念:用於網頁解析 \\ 安裝:\text{pip install lxml}\end{cases}

  • pymysql安裝詳解:{mysqlpip install pymsql\begin{cases}概念:用於連接mysql \\ 安裝:\text{pip install pymsql}\end{cases}

  • pymongo安裝詳解:{mongoDBpip install pymongo\begin{cases}概念:用於連接mongoDB \\ 安裝:\text{pip install pymongo}\end{cases}

  • flask安裝詳解:{PythonWeb使PythonWebpip install flask\begin{cases}概念:Python編寫的Web 微框架,讓我們可以使用Python語言快速實現一個網站或Web服務。 \\ 安裝:\text{pip install flask}\end{cases}

  • django安裝詳解:{DjangoWeb,pip install django\begin{cases}概念:Django 是應用於 Web 開發的高級動態語言框架,分佈式爬蟲需要用到 \\ 安裝:\text{pip install django}\end{cases}

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