<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          幫小姐姐寫個爬蟲,贏得她請我喝下午茶,Nice??!

          共 2142字,需瀏覽 5分鐘

           ·

          2020-08-19 14:38

          來源:清風Python

          作者:王翔丨

          小姐姐的請求

          不知道大家是否關注到,我的文章經(jīng)常在csdn的華為云博客中進行轉(zhuǎn)載,沒辦法人緣好,認識她們運營的小姐姐??!但是前幾天她和我說到了一個自己的困擾。領導讓她每周統(tǒng)計一次華為云發(fā)布的所有文章數(shù)據(jù),包括類型(原創(chuàng)/轉(zhuǎn)載)、標題、鏈接、訪問量、評論數(shù)。

          聽起來就夠麻煩了,等我登陸csdn看到他們居然收錄了1600多篇文章的時候,更懵逼了...小姐姐問Python能獲取數(shù)據(jù),那還用說當然OK了。剛好周末在家看了下csdn的網(wǎng)站結(jié)構(gòu),覺得蠻簡單的梳理了下思路,寫了些片段的代碼。

          今天,小姐姐突然說要請我喝下午茶,原來是領導又催她統(tǒng)計csdn數(shù)據(jù)了。



          作為從小扶老奶奶過馬路的新時代活雷鋒,這個下午茶 ,不, 這個忙我肯定要幫的??!之前已經(jīng)準備了一些代碼片段,重新梳理思路、優(yōu)化邏輯,不到半小時就整理了一份excel數(shù)據(jù)。然后你懂得,當然是下午茶嘍...不貪心,一杯瑞幸納瑞冰,哈哈!



          下面就來說說代碼的實現(xiàn)過程吧...

          CSDN網(wǎng)站分析


          首先,每個用戶都有一個自己的主頁,比如我的CSDN地址:https://blog.csdn.net/BreezePython


          其實平時都是在簡書上寫文章的,然后csdn使用博客搬家功能自動從簡書同步。個人還是比較喜歡簡書的書寫風格,但沒辦法誰讓小姐姐他們領導要搞csdn呢。盤它就完了!進入首頁后,我們拖動到底部會看到第幾頁第幾頁的數(shù)字,我們隨便選擇后面的頁碼,跳轉(zhuǎn)后我們的url變成了下面這樣:https://blog.csdn.net/BreezePython/article/list/2

          這邏輯簡直不要太簡單,非常適合新手們用作爬蟲練習。我們只需要for循環(huán)構(gòu)造頁碼,然后一頁一頁的爬下去就好了。那么什么時候結(jié)束呢?當你的url獲取頁碼后展示如下,就可以根據(jù)返回內(nèi)容結(jié)束代碼了,是不是so easy!


          html解析


          為什么說csdn比較適合Python新手學習爬蟲呢,讓我們再來通過他的頁面結(jié)構(gòu)了解下,如下圖:



          看清楚就會發(fā)現(xiàn),csdn的網(wǎng)站結(jié)構(gòu)清晰明了。我們只需要分別獲取每一頁的url后定位到article-list,然后遍歷每一個article-item-box。在每一個柵格欄內(nèi)部標注的位置,獲取到對應的數(shù)據(jù)即可!這里唯一有一點麻煩的是

          <a?href="https://blog.csdn.net/BreezePython/article/details/101475346"?target="_blank">
          ????????<span?class="article-type?type-1?float-none">原創(chuàng)span>

          ????????“?????Flask開發(fā)天氣查詢軟件,帶你掌握pipenv的使用與手機Termux下的部署?????”
          a>

          往常我們獲取a標簽的內(nèi)容,直接使用a.text即可,但在a標簽內(nèi)部又設計到一個span標簽,直接獲取會得到一下結(jié)果:

          原創(chuàng)????“?????Flask開發(fā)天氣查詢軟件,帶你掌握pipenv的使用與手機Termux下的部署?????”

          想使用什么child、next等方式都是無法實現(xiàn)僅獲取標題內(nèi)容的,所以可以嘗試先獲取文章類型,然后清空span標簽,這樣就可以得到最終的標題內(nèi)容了,代碼如下:

          article_type?=?article.a.span.text
          article_url?=?article.a["href"]
          article_span =?article.a.find_all('span')
          for?i?in?article_span:
          ????i.clear()

          分析完成,我們先跑一邊代碼,看看能否獲取到所需數(shù)據(jù),得到如下結(jié)果:


          數(shù)據(jù)沒問題了,那怎么保存呢?當然是excel了!

          Python保存excel


          python操作excel的庫很多,之前專門總結(jié)過一波:

          Python操作Excel 模塊,你猜哪家強?

          個人比較中意的是openpyxl,具體的操作就不在這贅述了,來看看最后的統(tǒng)計效果:


          以為這樣就結(jié)束了?怎么可能...

          打包可執(zhí)行文件


          既然喝了小姐姐的下午茶,總不能每周統(tǒng)計的時候,都敲詐一波小姐姐吧??墒谴a發(fā)給她,她一不會python、二沒有環(huán)境,這可如何是好?那么,我們?yōu)槭裁床粐L試去把代碼打包成windows下的可執(zhí)行文件呢?又到了我最喜歡的Python打包模塊Pyinstaller出場的時間了,不了解的看這里:

          Python打包工具--Pyinstaller詳細介紹

          既然我們只要隨便輸入一個用戶的首頁url,就能全篇爬取他的文章內(nèi)容,我們就來做一個簡單的GUI功能吧:



          最后我們只需要將它打包成exe工具,脫離環(huán)境直接運行即可!


          有些朋友說打包的exe工具很大,因為pyinstaller在打包時,會把可能依賴到的庫全部打進去,經(jīng)過我多年驗證,你可以單獨創(chuàng)建一個venv,只安裝你需要的幾個模塊這樣打包會很小。對比下圖是我使用主python環(huán)境和虛擬環(huán)境打包后的大小,可見一斑??!

          戀習Python

          關注戀習Python,Python都好練


          推薦閱讀:


          臥槽!微信居然有“隱身功能”了!

          Python 為什么要有 pass 語句?

          6 款 超好用的 Python 時間庫


          好文章,我在看??

          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久加勅比 | 成人高清尤物精品在线观看 | 国产又爽 又黄 免费网站在线 | 无码人妻一区二区三区蜜桃视频 | 天天操大逼 |