要抓的目標網頁
要抓的目標網頁

(一)故事的開始:

最近在網站「iT邦幫忙」程式討論區,看到一篇有趣的問題,關於 python 爬蟲( web crawler )時遇到亂碼。
我就試著用 python 去解決,這是第一次用 python 回答網友的問題,在解答的過程之中,
遇到很多環境上的問題,也有記錄在本文章內。

人生的旅程就是不斷「試誤」 try and error ,嘗試然後「失敗」,經過千幸萬苦才「成功」。

the terminator of movie
我小時候看過一部電影「魔鬼終結者」,裡面有一幕深刻衝擊我的內心。當主角在外流浪,沒有任何依靠,過著東躲西藏的日子。

肚子餓了就到提款機( ATM )用破解的提款卡, 巧妙破解銀行層層防禦, 然後提出現金且快速離開。

看完這一幕,我就立志當一名駭客,駭客是多麼神祕、神通廣大。 所以,我對網路上抓取網頁的技術,非常感興趣,看到討論區有人尋問爬蟲( web crawler ),我特別想要解答。

程式碼 Code

                            
                                import requests
                                from bs4 import BeautifulSoup
                                def ourl(url):
                                    res = requests.get(url)
                                    res.encoding = 'big5'
                                    soup1 = BeautifulSoup(res.text, 'html.parser')
                                    return soup1

                                url  =  'http://ds-hk.net/thread-93278-1-49.html'
                                soup  =  ourl(url)
                                print(soup.select('.t_msgfont')[0])
                            (看不到請滑動)
                            

(二)解決流程:

  1. 安裝
  2. 試著寫程式碼
  3. 除錯
  4. 心得
  5. 成功。相關網址

(三)安裝

  • 使用PyCharm community 2019.2
  • Python 3.7 (64bit)版本
  • 如果是在Linux 環境安裝,請記得指令前加上sudo
然後執行 run, 再來就出錯了, 沒關係,哭哭兩滴眼淚後,我們再戰。
                                
                                    Traceback (most recent call last): 
                                    File "D:/untitled1/main_grab.py", line 1, in <module>
                                    import requests
                                    ModuleNotFoundError: No module named 'requests'
                                (看不到請滑動)
                                


意思就是沒有找到'requests'
所以,我們要先來安裝'requests'
在PyCharm 的 Terminal 下打上
  1. pip install --upgrade setuptools
  2. pip install requests
  3. pip install BeautifulSoup
  4. easy_install command pip
  5. pip install BeautifulSoup4
  6. pip install lxml
  7. pip install html5lib
  8. 完成
when install BeautifulSoup failed
人生有時不是那麼順利,安裝時又出錯了。
我的臉瞬間變這樣。
When installing failed and my face was changed like that.

when install BeautifulSoup failed
when install BeautifulSoup failed
解決那麼多環境問題,總該成功了吧。
python 環境設定心得,我會寫在文章的最後面。

試著寫程式碼

                            
                                import requests
                                from bs4 import BeautifulSoup
                                def ourl(url):
                                    res = requests.get(url)
                                    res.encoding = 'utf-8'
                                    soup1 = BeautifulSoup(res.text, 'html.parser')
                                    return soup1

                                url  =  'http://34.94.68.139/'
                                soup2  =  ourl(url)
                                a_tags = soup2.select('html body h1')
                                for t in a_tags:

                                print(t.text)
                            (看不到請滑動)
                            

要抓的目標網頁
要抓的目標網頁顯示 測試的網站 先找個網站,來試一下網路爬蟲程式,我拿自已最近申請的GCP(Google Cloud Platform)建的網站來試,
因為裡面的HTML 架構比較簡單,
  1. 第一步,先把程式測成功。
  2. 第二步,改上提問者的網址。
  3. 第三步,再次測試抓取。
  4. 第四步,失敗後再次修改python 程式碼,再測試。
  5. 第五步,成功。

心得

我在試寫這個問題時,python3 的環境,有很多問題,
花了不少心力處理這一塊。
我應該寫一個「 python3 常見錯誤」
或是 「 python 環境設定」
之前,我是寫 Microsoft .NET C# 安裝都是「下一步」「下一步」超級簡單,有幸福的感覺!
但是,換到Linux python 後,最困難的是環境設定,
有時,要搞到一個星期,如果順利設定的話也要半個小時。
後記,我朋友說,Linux 把每個使用者當超人。
Windows 把每個使用者當白痴。 呵呵!~~ 我笑出來了。
我是 Windows Server使用者。

2020/5/29

#python, #crawler, #stock, #心得, #BeautifulSoup, #爬蟲

參考

iT邦幫忙-我第一次解答python的文章

python Command "python setup.py egg_info" failed with error code 1 in

測式失敗的文章2017年,離我三年前的文章Command "python setup.py egg_info" failed with error code 1 in

python函數出錯,我還去google 一下。 shadows name from outer scope

最後我google BeautifulSoup安裝方法。 [Day8]Python自習手札:BeautifulSoup安裝

因為不知道如何做用BOM參數,所以找到這篇。[Day 08] Beautiful Soup 解析HTML元素