要抓的目標網頁
(一)故事的開始:
最近在網站「iT邦幫忙」程式討論區,看到一篇有趣的問題,關於 python 爬蟲( web crawler )時遇到亂碼。
我就試著用 python 去解決,這是第一次用 python 回答網友的問題,在解答的過程之中,
遇到很多環境上的問題,也有記錄在本文章內。
人生的旅程就是不斷「試誤」 try and error ,嘗試然後「失敗」,經過千幸萬苦才「成功」。
我小時候看過一部電影「魔鬼終結者」,裡面有一幕深刻衝擊我的內心。當主角在外流浪,沒有任何依靠,過著東躲西藏的日子。
肚子餓了就到提款機( 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])
(看不到請滑動)
(二)解決流程:
- 安裝
- 試著寫程式碼
- 除錯
- 心得
- 成功。相關網址
(三)安裝
- 使用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 下打上
- pip install --upgrade setuptools
- pip install requests
- pip install BeautifulSoup
- easy_install command pip
- pip install BeautifulSoup4
- pip install lxml
- pip install html5lib
- 完成
人生有時不是那麼順利,安裝時又出錯了。
我的臉瞬間變這樣。
解決那麼多環境問題,總該成功了吧。
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 架構比較簡單,
- 第一步,先把程式測成功。
- 第二步,改上提問者的網址。
- 第三步,再次測試抓取。
- 第四步,失敗後再次修改python 程式碼,再測試。
- 第五步,成功。
心得
我在試寫這個問題時,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元素