創作內容

3 GP

PTT Beauty 板圖片爬蟲 (上)

作者:Yotsuba│2020-06-01 18:10:42│巴幣:6│人氣:502

這個連結會通往 PTT Beauty 板的一篇關於 Reol 的討論串

我還是先說一下好了,Reol 我婆




沒意外的話,你會先看到這個熟悉的畫面對吧 ?

當你點擊「我同意」的時候肯定送出了一個 POST 表單,接著才能正常瀏覽網頁

我們直接來撈一段封包分析看看







第一張圖讓我注意到了「over18」

而當我點擊「我同意」後馬上彈出了另外一個「over18」的 POST 表單

接著我們就可以正常瀏覽網頁了


我們可以看到 Form Data 裡面有兩個資料

第一個是 /bbs/Beauty/M.1563888394.A.F76.html,第二個是 yes

可見和原本的 https://www.ptt.cc/bbs/Beauty/M.1563888394.A.F76.html 做對比

我們知道 https 是協定,www.ptt.cc 是網域,/bbs/Beauty/M.1563888394.A.F76.html 是目標檔案

而 yes 就代表我們點擊了同意,那點擊不同意大概就是 no 囉

接著我們寫一小段程式碼 :


import requests


response = requests.get('https://www.ptt.cc/bbs/Beauty/M.1563888394.A.F76.html')

print(response.text)


執行結果




看到 <p> 節點的關鍵字大概就知道了,沒有點擊「我同意」果然不行

能理解點擊「我同意」一定是 POST 行為,但是由誰來記錄我點擊了「我同意」呢 ?

答案就是 cookie,cookie 幫我們紀錄了「我同意」這個狀態

我們再寫一段測試程式碼


import requests


params   = {'from' : '/bbs/Beauty/M.1563888394.A.F76.html', 'yes' : 'yes'}

response = requests.post('https://www.ptt.cc/ask/over18', data = params, allow_redirects = False)

cookies  = response.cookies

response = requests.get('https://www.ptt.cc/bbs/Beauty/M.1563888394.A.F76.html', cookies = cookies)

print(response.text)


執行結果




終於看到一個比較正常的畫面了,確定可以成功請求到我們要的網頁

這邊就先不解釋 allow_redirects 重導向是幹嘛用的 ?

主要是我發現我同意這個 POST 會重導向,還會把 cookie 換掉

所以要先關閉重導向才可以拿到我要的那份 cookie


總之這篇文章展示了一個 cookie 的處理方法,處理掉以後就能成功拿到目標網頁

拿到目標網頁後,就可以使用 Beautiful Soup 的各種操作取的圖片連結並且下載了

可以參考看看延伸閱讀,下篇文章會教你使用更簡潔的方式撰寫程式碼


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4802256
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 2 篇留言

多古尼爾拉布拉布拉格
我想問所以重導向的參數不設定就可以辦到我們今天要的效果
那重導向有什麼其他的用法嗎(?
之後會介紹到之類的?
還是就只是保留當前的cookies不會被洗掉

06-02 08:29

Yotsuba
重導向就是重導向

當今天請求一個網站時,請求完畢它有可能透過 JS 把你導向另一個網站

像是 "登入成功,3 秒後會跳轉頁面" 就是一個例子


在這個例子中,POST 其實會被重導向,會變成請求了兩個網頁

而我們要的是第一個 cookie,結果因為重導向讓 cookie 被覆蓋掉了

所以這裡就把重導向關閉 (requests 重導向預設是開啟)

但如果今天是使用 Session 物件就沒這問題了


之後還是寫一篇文章解釋一下重導向比較好06-02 08:37
風蕭蕭荊軻醬
想問一下
params = {'from' : '/bbs/Beauty/M.1563888394.A.F76.html', 'yes' : 'yes'}
這行的意思 有點不太理解 'from'跟'yes'是從哪邊得出來的

07-15 16:48

Yotsuba
Chrome 按 F12 撈封包來的

可以參考整篇文章的第 3 張圖片07-15 17:53
我要留言提醒:您尚未登入,請先登入再留言

3喜歡★happy819tw 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Session... 後一篇:PTT Beauty 板...

追蹤私訊切換新版閱覽

作品資料夾

lemonade1120隨便逛逛的你
隨便看看 隨便看 逛逛小屋 歡迎光臨 :)看更多我要大聲說昨天22:53


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】