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

歡迎訪問 生活随笔!

生活随笔

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

python

Docker最全教程之Python爬网实战(二十二)

發布時間:2023/12/4 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker最全教程之Python爬网实战(二十二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


Python目前是流行度增長最快的主流編程語言,也是第二大最受開發者喜愛的語言(參考Stack?Overflow?2019開發者調查報告發布)。筆者建議.NET、Java開發人員可以將Python發展為第二語言,一方面Python在某些領域確實非常犀利(爬蟲、算法、人工智能等等),另一方面,相信我,Python上手完全沒有門檻,你甚至無需購買任何書籍!

由于近期在籌備4.21的長沙開發者大會,耽誤了不少時間。不過這次邀請到了騰訊資深技術專家、.NET中國社區領袖,微軟MVP張善友;52ABP開源框架的作者,微軟MVP梁桐銘;知名技術類作家汪鵬,騰訊高級工程師卓偉,騰訊云高級產品經理胡李偉等等,有興趣參加的朋友可以點擊公眾號菜單【聯系我們】==>【報名】進行報名,技術不分語言,亦沒有界限,期待和你分享、交流!


目錄


  • 關于Python

  • 官方鏡像

  • 使用Python抓取博客列表

  • 需求說明

  • 了解Beautiful Soup

  • 分析并獲取抓取規則

  • 編寫代碼實現抓取邏輯

  • 編寫Dockerfile

  • 運行并查看抓取結果


?


關于Python


Python是一種計算機程序設計語言。是一種動態的、面向對象的腳本語言,最初被設計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用于獨立的、大型項目的開發。Python目前是流行度增長最快的主流編程語言,也是第二大最受開發者喜愛的語言(參考Stack?Overflow?2019開發者調查報告發布)。

Python是一種解釋型腳本語言,可以應用于以下領域:

  • Web 和 Internet開發

  • 科學計算和統計

  • 教育

  • 桌面界面開發

  • 軟件開發

  • 后端開發

Python學習起來沒有門檻,但是通過它,你可以用更短的時間,更高的效率學習和掌握機器學習,甚至是深度學習的技能。不過單單只會Python對大多數人來說是不行的,你最好還掌握一門靜態語言(.NET/Java)。同時,筆者也建議.NET、Java開發人員可以將Python發展為第二語言,一方面Python在某些領域確實非常犀利(爬蟲、算法、人工智能等等),另一方面,相信我,Python上手完全沒有門檻,你甚至無需購買任何書籍!


官方鏡像


官方鏡像地址:https://hub.docker.com/_/python

注意,請認準官方鏡像:


使用Python抓取博客列表



需求說明


本篇使用Python來抓取我的博客園的博客列表,打印出標題、鏈接、日期和摘要。

博客地址:http://www.cnblogs.com/codelove/

內容如下所示:


了解Beautiful Soup


Beautiful?Soup?是一個可以從HTML或XML文件中提取數據的Python庫,支持多種解析器。Beautiful?Soup簡單的說,就是一個靈活又方便的網頁解析庫,是一個爬網利器。本篇教程我們就基于Beautiful?Soup來抓取博客數據。

Beautiful?Soup官方網站:https://beautifulsoup.readthedocs.io

主要解析器說明:

?


分析并獲取抓取規則


首先我們使用Chrome瀏覽器打開以下地址:http://www.cnblogs.com/codelove/

然后按下F12打開開發人員工具,通過工具我們梳理了以下規則:

  • 博客塊(div.day)


  • 博客標題(div. postTitle a)


  • 其他內容獲取,如日期、博客鏈接、簡介,這里我們就不截圖了。

  • 然后我們通過觀察博客路徑,獲取到url分頁規律:


    根據以上分析,我們胸有成竹,開始編碼。


    編寫代碼實現抓取邏輯


    在編碼前,請閱讀BeautifulSoup官方文檔。然后根據需求,我們編寫Python的代碼如下所示:

    # 關于BeautifulSoup,請閱讀官方文檔:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#id52

    from bs4 import BeautifulSoup

    import os

    import sys

    import requests

    import time

    import re

    url = "https://www.cnblogs.com/codelove/default.html?page={page}"

    ?

    #已完成的頁數序號,初時為0

    page = 0

    whileTrue:

    ??? page += 1

    ??? request_url = url.format(page=page)

    ??? response = requests.get(request_url)

    ??? #使用BeautifulSouphtml5lib解析器解析HTML(兼容性最好)

    ??? html = BeautifulSoup(response.text,'html5lib')

    ?

    ??? #獲取當前HTML的所有的博客元素

    ??? blog_list = html.select(".forFlow.day")

    ?

    ??? # 循環在讀不到新的博客時結束

    ??? ifnot?blog_list:

    ??????? break

    ?

    ??? print("fetch:", request_url)

    ?

    ??? for blog in?blog_list:

    ??????? # 獲取標題

    ??????? title = blog.select(".postTitlea")[0].string

    ??????? print('--------------------------'+title+'--------------------------');

    ?

    ??????? # 獲取博客鏈接

    ??????? blog_url = blog.select(".postTitlea")[0]["href"]

    ??????? print(blog_url);

    ?

    ??????? # 獲取博客日期

    ??????? date = blog.select(".dayTitlea")[0].get_text()

    ??????? print(date)

    ?

    ??????? # 獲取博客簡介

    ??????? des = blog.select(".postCon> div")[0].get_text()

    ??????? print(des)

    ?

    ??????? print('-------------------------------------------------------------------------------------');

    ?

    如上述代碼所示,我們根據分析的規則循環翻頁并且從每一頁的HTML中抽取出了我們需要的博客信息,并打印出來,相關代碼已提供注釋,這里我們就不多說了。

    編寫Dockerfile

    代碼寫完,按照慣例,我們仍然是使用Docker實現本地無SDK開發,因此編寫Dockerfile如下所示:

    # 使用官方鏡像

    FROM?python:3.7-slim

    ?

    # 設置工作目錄

    WORKDIR /app

    ?

    # 復制當前目錄

    COPY . /app

    ?

    # 安裝模塊

    RUN pip install--trusted-host pypi.python.org -r requirements.txt

    ?

    # Run app.py whenthe container launches

    CMD ["python", "app.py"]

    ?

    ?

    注意,由于我們使用到了比如beautifulsoup等第三方庫,因此我們需要安裝相關模塊。requirements.txt內容如下所示(注意換行):

    html5lib

    beautifulsoup4

    requests


    運行并查看抓取結果


    構建完成后,我們運行起來結果如下所示:

    ?


    | 往期內容 |


    Docker最全教程——從理論到實戰(一)

    Docker最全教程——從理論到實戰(二)

    Docker最全教程——從理論到實戰(三)

    Docker最全教程——從理論到實戰(四)

    Docker最全教程——從理論到實戰(五)

    Docker最全教程——從理論到實戰(六)

    Docker最全教程——從理論到實戰(七)

    Docker最全教程——從理論到實戰(八)? ??

    Docker最全教程——從理論到實戰(九)

    Docker最全教程之使用Tencent Hub來完成CI(十)
    Docker最全教程——數據庫容器化(十一)
    Docker最全教程——數據庫容器化之持久保存數據(十二)
    Docker最全教程——MongoDB容器化(十三)
    Docker最全教程——Redis容器化以及排行榜實戰(十四)

    Docker最全教程之Ubuntu下安裝Docker(十五)

    Docker最全教程之樹莓派和Docker(十六)

    Docker最全教程之使用TeamCity來完成內部CI、CD流程(十七)

    Docker最全教程之使用Docker搭建Java開發環境(十八)

    Docker最全教程之Go實戰,墻裂推薦(十九)

    Docker最全教程之使用.NET Core推送釘釘消息(二十)

    Docker最全教程之使用 Visual Studio Code玩轉Docker(二十一)




    轉載是一種動力 分享是一種美德

    如果喜歡作者的文章,請關注“magiccodes”訂閱號以便第一時間獲得最新內容。本文版權歸作者和湖南心萊信息科技有限公司共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


    QQ群:

    編程交流群<85318032>?

    產品交流群<897857351>


    總結

    以上是生活随笔為你收集整理的Docker最全教程之Python爬网实战(二十二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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