iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
自我挑戰組

BeautifulSoup網頁爬蟲佐Django伺服器框架附AWS雲端運算服務系列 第 4

[Day 4]餐前濃湯-Vagrant環境設定及BeautifulSoup安裝

昨天我們介紹了Python跟Vagrant這兩個東東是幹啥的
以及這兩個東東如何安裝
今天我們會把剩下的vagrant設定弄完
以及安裝BeautifulSoup
廢話不多說,砸們累狗~

Vagrant參數修改

昨天我們安裝完了Vagrant之後
接下來握們要來稍微的、小小的、輕輕的(?
修改我們的Vagrant參數
至於這些參數在哪呢?
還記得我們建立了一個資料夾吧
參數就在資料夾內的Vagrantfile
我們開啟我們的文字編輯器,打開這個檔案,就會出現這個東西

第一步呢,我們要先來修改我們的ip位址
這個ip位址之後我們做django時會用到,用來代表這個虛擬機器他的IP位址
以後開server時才能讓用戶找得到
啊這個東西要怎麼設定呢
首先我們先開啟我們的cmder,輸入ipconfig

輸入之後會列出一堆網路的連線IP設定
我們找到目前連線的IP設定,並且看他的Default Gate
這個東西就是網路的預設Gate
簡單來說就是,你家網路的大樓管理員啦
每當你要把東西寄出去時,就會把東西給大樓管理員,管理員填好大樓位址後把東西寄出去
然後當東西寄到大樓時,大樓管理員會看這個東西是在大樓內的哪個位置,然後把東西送給你
這就是Default Gate的功用
那居然都說這是棟大樓了,當然裡面一定會有一些位置是沒有住人的
所以我們的IP就選一個沒有住人的房間,例如172.16.15.123
接著前面我們要在設定說這個IP只要讓大樓內的人使用就好,還是大樓外的也可以用
也就是要不要讓區域網路外的連線也進來
如果要讓外面的人進來就把屬性設成
config.vm.network :"public_network", "172.16.15.123"
那如果只想讓大樓內的人使用就把他設成
config.vm.network :"private_network", "172.16.15.123"
那這裡由於我們只是拿來當作內部開發功能而已,因此選擇private_network就好
然後我們再把config.vm.network "forwarded_port", guest: 80, host: 8080這行註解取消
代表我們對外的80 port會對應到虛擬環境的8080 port
到這邊,網路的IP位址就設定完成了

下一步就是設定共用資料夾啦
畢竟不是人人都是大神,vim說用就用,打字速度跟鬼一樣,還能五分鐘送你一個function
我們都在使用者名稱標榜這是菜蟲練功坊
因此我們會先建立一個共用資料夾,在共用資料夾內建立修改程式,再到虛擬環境測試
共同資料夾的設置也非常簡單,只要下這段設定
config.vm.synced_folder "你在現實世界的資料夾", "你在虛擬世界的資料夾"
這樣vagrant就會在虛擬環境建立一個資料夾,讓兩邊都能共用檔案啦
這裡我們就改成config.vm.synced_folder "stonks", "vagrant_stonks"

這些東西處理完之後,別忘了關掉虛擬環境後重開機
虛擬環境關機的指令為vagrant halt
或是如果你在虛擬環境內可以下sudo shutdown(代表OS關機)
等到關機完成後再下vagrant up
這樣新的設定就會套用上去啦

另外,如果你不想要關機,只是想要暫時離開vagrant虛擬環境掛機的話
可以直接下exit的指令,因為你是透過ssh進來的,這個指令會讓你離開ssh
等要回去時再下一次vagrant ssh就好囉~

好喝的一碗湯-BeautifulSoup安裝

說到網頁爬蟲,網頁資料分析
不得不提起的套件,就是這個BeautifulSoup啦
至於為什麼他要叫做BeautifulSoup,撈網頁跟湯到底有甚麼關係,我只能說

這東西的功用是甚麼呢
簡單來說,就是幫你把網頁裡面的標籤屬性那些的直接幫你分類
你就不用在那邊用split用半天,人家服務人員直接替你分切好還附上胡椒鹽
聽起來就超棒的對吧

那這東西到底要怎麼下載呢,非常簡單
首先我們先回到現實世界中
輸入pip install beautifulsoup4(這裡記得要多加一個4)
然後由於我們要撈取外部網頁,所以我們順便下載requests套件,用他來發送HTP request
輸入pip install requests

好了搞定,就是這麼方便快速
你發現程式碼需要pandas pip install pandas
程式碼需要numpy pip install numpy
程式碼需要tensorflow pip i...等一下這是個例外,但是這跟我們要做的東東無關
如果來年還想參加鐵人賽的話,到時候再專門做一篇文章跟大家詳細講解

總之,Python這東西就是你套件缺啥,就直接下pip install,高達九成五機率可以立刻解決
This is the reason why I love Python.

下載好之後一樣我們來驗證一下這東西是否成功下載
輸入python進入terminal
然後輸入import bs4

如果你看到他毫無反應,不像前面會跳出一堆有的沒的東西,那我只能說
恭喜你安裝成功啦~
畢竟人家python比較沉默寡言,就別為難人家了

好啦,下載完之後我們來實際測試一下這套件事不是真的能正常使用
前面都說了他能做網路爬蟲,那我們就來爬個網頁吧
雖然這篇的主軸是要撈取股票市場作分析,挑選投資標的達到財富自由
但畢竟只是測試而已,就容小的私心一下爬這個網頁吧
https://schedule.hololive.tv/

首先第一步,當然要先開啟新檔,這樣才能執行嘛
接著我們在檔案內輸入這段code

import requests
from bs4 import BeautifulSoup
res = requests.get("https://schedule.hololive.tv/")
soup = BeautifulSoup(res.text, "html.parser")
print(soup)

第一第二行不用說吧,就是把剛剛下載的套件import進來
第三行就是我們剛剛講的,用這個套件送出HTTP request,用get method送到剛剛提到的url
送出之後,HTTP response就會送回來,我們這裡用res變數把他接起來
第四行就是我們的BeautifulSoup魔法啦
第一個參數就是我們response的原始碼,這裡是紀錄在text屬性
第二的參數則是代表你的解析要用甚麼方式解析
就像是服務生會來替你分切,會依照各個不同的服務生有不同分切方式
有的習慣對切在對切,有的喜歡先橫切完再直切,有的還會切前表演花式拋刀
但其實最後結果也是大同小異就是,就像切完後牛排還是牛排一樣
那最後一行把結果print出來之後應該會出現這個東東
講解完之後我們把檔案儲存,這裡我們把它命名成test_bs4.py
然後輸入python test_bs4.py執行

只要出現這個像HTML的原始碼,就代表你成功啦~

下一篇我們就要來正式的把這種分切技術拿到我們的股市資訊觀測站好好的小試身手了
我們會教你如何找到你要的資料,把他分切下來,然後把資料存起來
欲知股市到底會被分切成甚麼慘樣(?
且聽下回分解~


上一篇
[Day 3]開胃沙拉-Python安裝及Vagrant虛擬環境架設
下一篇
[Day 5] 餐前濃湯 pt.2-BeautifulSoup meets Stocks
系列文
BeautifulSoup網頁爬蟲佐Django伺服器框架附AWS雲端運算服務30

尚未有邦友留言

立即登入留言