日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

我与Python网络爬虫的第一次接触

發布時間:2023/12/20 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我与Python网络爬虫的第一次接触 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習于:

崔慶才_Python3.6網絡爬蟲實戰視頻教程:https://www.bilibili.com/video/av19057145/?p=2

崔慶才《Python3網絡爬蟲開發實戰》:https://germey.gitbooks.io/python3webspider/content/

爬蟲基礎及實戰

1、環境配置:

  • Python3+Pip環境安裝

    進行爬蟲工作,如果只是單純安裝 Python 還好,到后面要安裝一些解析庫等等就比較麻煩,推薦安裝 Anaconda 來管理你的安裝環境和各種工具包。Anaconda 是專注于數據分析的 Python 發行版本,包含了 conda、Python 等190多個科學包及其依賴項。

  • MongoDB 安裝:非關系數據庫,key-value 存儲。再安裝可視化界面軟件,安裝 Robomongo ,查看 MongoDB 數據庫內容。詳解介紹:MongoDB簡介

    MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。

    在高負載的情況下,添加更多的節點,可以保證服務器性能。

    MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

    MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

  • Redis 安裝:非關系數據庫,key-value 存儲。再安裝可視化界面軟件,安裝 redis-desktop,查看 Redis 數據庫內容。詳細介紹:Redis簡介

  • MySQL 安裝:關系型數據庫。

  • 爬蟲常用庫的安裝:

    • 請求庫:Python內置庫 urllib、第三方 requests 庫、selenium 庫(支持瀏覽器驅動,自動化測試)
    • 解析庫:Python 內置庫 re、lxml、beautifulsoup(依賴于 lxml 庫,請先安裝 lxml 庫)、pyquery、
    • 存儲庫&其他:pymysql、pymongo、redis、flask、django、jupyter

Requests 的安裝:

由于 Requests 屬于第三方庫,也就是 Python 默認不會自帶這個庫,需要我們手動去安裝。在命令行下輸入 pip3 install requests 即可安裝。

Selenium 的安裝:

Selenium 是什么?一句話,自動化測試工具。它支持各種瀏覽器,包括 Chrome,Safari,Firefox 等主流界面式瀏覽器,如果你在這些瀏覽器里面安裝一個 Selenium 的插件,那么便可以方便地實現 Web 界面的測試。換句話說叫 Selenium 支持這些瀏覽器驅動。

我們在請求網頁的時候,很多網頁可能是 JS 渲染后的數據,我們怎么獲取這些渲染后的數據呢,可以使用 Selenium 可以得到渲染后頁面。

ChromeDriver 的安裝:

安裝好了 Selenium 庫,但是它是一個自動化測試工具,需要瀏覽器來配合它使用。

我們需要安裝一個 ChromeDriver 才能驅動 Chrome 瀏覽器完成相應的操作,在這介紹下 Chrome 瀏覽器及 ChromeDriver 驅動的配置,先下載 Chrome 瀏覽器,然后需要安裝一個 ChromeDriver 才能驅動。ChromeDriver 參考網上教程,這里就不贅述了。如果想要實現 Selenium 驅動 Firefox 瀏覽器需要 GeckoDriver 的安裝。

PhantomJS 的安裝:

如果我們使用 Chrome 或 Firefox 進行網頁抓取的話,每次抓取的時候,都會彈出一個瀏覽器,比較影響使用。這里介紹一個無界面瀏覽器,叫做 PhantomJS。

PhantomJS 是一個無界面的,可腳本編程的 WebKit 瀏覽器引擎。它原生支持多種 web 標準:DOM 操作,CSS 選擇器,JSON,Canvas 以及 SVG。

Selenium 支持 PhantomJS,這樣在運行的時候就不會再彈出一個瀏覽器了,而且其運行效率也是很高的,還支持各種參數配置,使用非常方便,下面我們就來了解一下 PhantomJS 的安裝過程。

Aiohttp 的安裝:

之前介紹的 Requests 庫是一個阻塞式 HTTP 請求庫,當我們發出一個請求后,程序會一直等待服務器的響應,直到得到響應后程序才會進行下一步的處理,其實這個過程是比較耗費資源的。如果程序可以在這個等待過程中做一些其他的事情,如進行請求的調度、響應的處理等等,那么爬取效率一定會大大提高。

LXML 的安裝:

LXML 是 Python 的一個解析庫,支持 HTML 和 XML 的解析,支持 XPath 解析方式,而且解析效率非常高。

BeautifulSoup 的安裝:

BeautifulSoup 是 Python 的一個 HTML 或 XML 的解析庫,我們可以用它來方便地從網頁中提取數據,它擁有強大的 API 和多樣的解析方式。

BeautifulSoup 的 HTML 和 XML 解析器是依賴于 LXML 庫的,所以在此之前請確保已經成功安裝好了 LXML 庫。

PyQuery 的安裝:

PyQuery 同樣是一個強大的網頁解析工具,它提供了和 jQuery 類似的語法來解析 HTML 文檔,支持 CSS 選擇器,使用非常方便。

PyMySQL 的安裝:

在 Python3 中如果想要將數據存儲到 MySQL 中就需要借助于 PyMySQL 來操作。Pip 安裝方式:pip3 install pymysql

PyMongo 的安裝:

在 Python 中如果想要和 MongoDB 進行交互就需要借助于 PyMongo 庫。Pip 安裝方式:pip3 install pymongo

RedisPy 的安裝:

對于 Redis 來說,我們要使用 RedisPy 庫來與其交互。Pip 安裝方式:pip3 install redis

Flask 的安裝:

Flask 是一個輕量級的 Web 服務程序,簡單、易用、靈活,在本書中我們主要用它來做一些 API 服務。Pip 安裝方式:pip3 install flask

Django 的安裝:

Django 是一個 Web 服務框架,提供了完整的后臺管理,提供了一些模板引擎、接口、路由啊。Pip 安裝方式:pip3 install django

Jupyter 的安裝:

相當于一個 notebook 記事本,但是這個記事本功能是比較強大的,它是運行在網頁端,然后你可以在這個記事本里寫代碼,進行調試,也可以進行在線運行。Pip 安裝方式:pip3 install jupyter 它的依賴庫還是比較多的,安裝過程需要耐心等待下。

如果一個一個安裝嫌麻煩,可以執行下面這條命令直接安裝所需庫:pip3 install requests selenium beautifulsoup4 pymysql pymongo redis flask django jupyter

2、爬蟲基礎

什么是爬蟲:請求網站并提取數據的自動化程序。

爬蟲基本流程:

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

    • 請求方式:主要有 GET、POST 兩種類型,另外還有 HEAD、PUT、DELETE、OPTIONS 等。
    • 請求 URL:URL 全稱統一資源定位符,如一個網頁文檔、一張圖片、一個視頻等都可以用 URL 唯一確定。
    • 請求頭:包含請求時的頭部信息,如 User-Agent、Host、Cookies 等信息。
    • 請求體:請求時額外攜帶的數據,如表單提交時的表單數據。

    Response 包含的內容:

    • 響應狀態:有多種響應狀態,如 200 代表成功、301 代表跳轉、404 找不到頁面、502 服務器錯誤。
    • 響應頭:如內容類型、內容長度、服務器信息、設置 Cookie 等等。
    • 響應體:最主要的部分,包含了請求資源的內容,如網頁 HTML、圖片二進制數據等。

    能抓怎樣的數據?

    • 網頁文本:如 HTML 文檔、Json 格式文本等
    • 圖片:獲取到的是二進制文件,保存為圖片格式
    • 視頻:同為二進制文件,保存為視頻格式即可
    • 其他:只要是能請求到的,都能獲取

    怎樣解析?—》解析方式:

    • 直接解析
    • Json 解析
    • 正則表達式
    • BeautifulSoup
    • PyQuery
    • XPath

    為什么我抓到的和瀏覽器看到的不一樣?—》因為有些數據是 JS 調用的后臺接口再加載出來的。

    怎樣解決 JavaScript 渲染的問題?

    • 分析 Ajax 請求
    • Selenium / WebDriver 來驅動瀏覽器
    • Splash : 也是和 Selenium 一樣,也是來模擬 JS 渲染的。
    • PyV8、Ghost.py

    怎樣保存數據?

    • 文本:純文本、Json、XML 等
    • 關系型數據庫:如 MySQL、Oracle、SQL Server 等具有結構化形式存儲
    • 非關系型數據庫:如 MongoDB、Redis 等 key-value 形式存儲
    • 二進制文件:如圖片、視頻、音頻等等直接保存成特定格式即可

    爬蟲框架及分布式爬取

    PySpider 框架:

    PySpider 是國人 binux 編寫的強大的網絡爬蟲框架,它帶有強大的 WebUI、腳本編輯器、任務監控器、項目管理器以及結果處理器,同時它支持多種數據庫后端、多種消息隊列,另外它還支持 JavaScript 渲染頁面的爬取,使用起來非常方便,本節介紹一下它的安裝過程。

    PySpider 是支持 JavaScript 渲染的,而這個過程是依賴于 PhantomJS 的,所以還需要安裝 PhantomJS,所以在安裝之前請安裝好 PhantomJS。Pip 安裝:pip3 install pyspider 命令執行完畢即可完成安裝。安裝完成之后,可以直接在命令行下啟動 PySpider:pyspider all 正常啟動后,這時 PySpider 的 Web 服務就會在本地 5000 端口運行,直接在瀏覽器打開:http://localhost:5000/ 即可進入 PySpider 的 WebUI 管理頁面。

    Scrapy 框架:

    Scrapy 是一個十分強大的爬蟲框架,依賴的庫比較多,至少需要依賴庫有 Twisted 14.0,lxml 3.4,pyOpenSSL 0.14。而在不同平臺環境又各不相同,所以在安裝之前最好確保把一些基本庫安裝好,尤其是 Windows。安裝方式兩種,① Anaconda 下的安裝 ② Windows下的安裝,具體的安裝教程參考:Scrapy的安裝

    • Windows 下直接安裝:

    • wheel:pip install wheel
    • lxml:①使用 Pip 安裝 pip3 install lxml ②也可以采用 Wheel 方式安裝,推薦直接到這里下載對應的 Wheel 文件,鏈接為 http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml>,找到本地安裝 Python 版本和系統對應的 LXML 版本,再利用 Pip 安裝即可
    • PyOpenssl:https://pypi.python.org/pypi/pyOpenSSL#downloads 下載 Wheel 文件利用 Pip 安裝 即可
    • Twisted:到 http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下載 Wheel 文件,利用 Pip 安裝即可
    • Pywin32:從官方下載對應版本的安裝包 https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/>, 下載完畢之后雙擊安裝即可
    • Scrapy:前面是一些依賴庫的安裝,完畢之后,再使用 Pip 安裝 Scrap 框架 pip3 install Scrapy



    PS:關于網絡爬蟲,除了上面還有很多需要學習,如部署分布式方式抓取數據、如何應對網站的反爬蟲策略(如使用代理處理反爬)等等。

    總結

    以上是生活随笔為你收集整理的我与Python网络爬虫的第一次接触的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。