在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲


在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

一丶前話

大家好我是小默上一期分享了給電腦主機裝副屏顯示溫度等等的 所以這一期的內容就是如何在最短的時間內教會你用python從網上爬到你想要的內容(本文只限於文字)。需要說明的是,我也只是個小白,不可避免的會犯一些錯誤,我只是分享一下我從這個方向走通了。如果有其他的問題,我就真的愛莫能助了。

二、準備工作

想要做好的自己的小蟲蟲,你需要準備以下準備:

Python的基本語法(如果有C的基礎半天就能看懂)

Python的編譯軟件(我裝的官方的那個,但是用的是sublime,打字舒服點)

一臺能上網的電腦(要是你自己都上不了,還想讓蟲蟲上?)

在開始打代碼前,先裝好beautifulsoup,lxml,requests這三個庫

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

先升級一下固件,不然裝完會有提示你更新版本

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

依次輸入,重點看到successfully基本就沒問題了

三、開始搞代碼

我並不想從頭開始教怎麼寫代碼,我會在最後分享自己的代碼。在這裡我需要說的就是這個代碼什麼部分是什麼(知道必須要有這個東西就行了),想要做自己的東西應該改哪個地方。整個代碼我們從頭開看,大概過一遍有什麼。

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

第一部分

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

第二部分

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

第三部分 重點

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

最後一點

四、觀察網頁

以上的代碼你不一定看得懂,但是你應該有個框架在心中了,網頁在代碼中的表現形式就是一堆堆的英文字符等,我們所需要的數據就是通過特定的符號層層包裹在裡面,我們需要做的就是一層一層定位到數據旁,再導入到代碼中。下面我們將看到這個網頁到底長怎麼樣。這裡以我代碼裡面的網址為例,打開網頁後,按F12,如果F12有額外複用功能的,需要一起按FN(很多筆記本就是這樣)。我們需要做兩步,第一步,找到代碼位置;第二步,找到代碼的嵌套標籤。

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

看到右邊那些代碼沒,基本上就是一段代碼對應了左邊的一段內容,而我們第一步要做的就是找到你要數據所在的代碼。這裡講一個懶人方法,把那個三角點一下全部展開,然後用鼠標掃一遍,直到掃到你要的那個代碼在左邊的畫面中剛好對上,那麼這就是你需要找的位置。

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

懶人方法

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

舉個例子,我想要看明天的天氣預報數據,那麼你的代碼應該定位在這個位置

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

打開這個代碼下面的所有摺疊項目你就可以看到我們需要的數據了

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

也寫不下,看下面

第二步來了,注意劃線部分,就是我們要找的標籤,通常都是

這種類似的格式。按照由內到外推可以看出來,這個數據藏在了
,這個又在
裡面,然後在向上看是
,div, class = “container”> 差不多就到這裡了(已經基本到最外面了)。
在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

定位代碼

要想定位到這個地方。代碼就是從外到裡定位的。請模仿這個寫法即可。當然不一定所有的都要寫上,只要條件足夠篩選出數據即可。細心的同學會發現,為什麼前面是find,最後一個是find_all呢?這裡需要說明的是,find的作用是找到第一個即可,find_all是符合條件的都篩進來。前面是定位,最後一個detail為什麼要用find_all?仔細看代碼中有7個,滑動看一下就知道,這7個detail對應的是未來7天的天氣預報。所以我都整下來了。

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

到這步就可以先printf出來康康了,可以看到我們要的數據基本都搞出來了。

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

定位下一步代碼

到這一步就可以往下走了,因為我這裡是爬7天的天氣數據,而且在代碼裡面會發現7天的數據是幾乎類似的結構,所以在這裡我就用了for in的結構,這個for x in y的結構有所不同的是,y是找到的那7個detail的代碼,x是一個一個取出來,讀取裡面的數據後,再取下一個X,直到取完所有。(這裡的try和expect是報錯信息,可以查看我們上一步定位的數據有沒有效,比如不小心混進去個其他的數據,但是也是有類似的標籤。這個數據在這一步就進行不下去,就會返回一個except的情況告訴你:你給我安排的情況和我現在拿在手上的數據匹配不上!)

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

現在我們來看try裡面的內容,第一行,創建空字典。

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

第二行及其後面的都是,找到div,class=”xxx”的結構,然後加個.text就可以把中間的內容賦值給字典對應的鍵

第二行及其後面的都是,找到div,class=”xxx”的結構,然後加個.text就可以把中間的內容賦值給字典對應的鍵值

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

比如這裡就是把紅圈內的“明天”賦值到代碼了,需要注意的是,像這種情況,什麼回車,空格也一起賦值進去了,這也是我最後為什麼

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

回到正題,把要的數據篩一遍後,把這個字典添加到這個列表的尾端(循環7次不就有7個字典了嗎)

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

爬出來的原始數據

在頭條你甚至能學會-python 硬核電子助手(1)- python 爬蟲

去掉了無意義字符

整段代碼就這樣了。是不是感覺有那麼一點點觸手可及了?至於後面那段去除空白字符的操作,這個和爬蟲就沒有關係了——就是基本的遍歷,然後操作字符串就行了。

總結一下我們在幹嘛。打開瀏覽器+F12,看到那堆代碼沒?爬蟲的前半段會將它處理為類似於文本的信息,我們需要做的就是在這堆數據裡面手動找到我們要的數據的位置,並告訴代碼,然後在這堆有用信息中,我們用代碼實現了從數據中挖取自己想要的數值。最後打印出來。至於這個數據要怎麼用,那就是以後的事了

五、一些很重要的後話

Q:Z? WSM? 我用瀏覽器+F12看著數據好好的,為什麼代碼找不到?

A:正常,在解析網頁的時候有時候會產生內容缺失。我現在遇到的有兩種,一種可以通過改變解釋器代碼解決(你們也百度得到),另外一種就是這個數據沒那麼簡單,需要更高級的技巧才搞得到。所以……你還是換個能爬的吧!@#¥%……

Q:我收藏了,我會了。所以你能幫幫我嗎?這玩意兒還能幹啥?

A: 還能……比如學生黨可以查飯卡費,電費,課程安排等,其他~看你自己想象力了吧!@#¥%……&*

Q:我懂了。然後呢,你打算幹嘛?

A:這個……只能說開了一個超級大坑,上到網絡爬蟲,下到單片機原理,我打算自己做個項目。做不做得出來就是另外一回事了,只是過程中有這麼一個小小的成果,就拿出來分享一下。自勉吧。


疫情在家不如學習一下python 小默今天先教到這裡喜歡小默的點個關注謝謝

"


分享到:


相關文章: