感謝老師提點! 我發現留言的父級元素都有class_=push 我先創建列表x=[] 利用img.find_parent(class_="push")找到父級元素含有class_="push"的網址 將它們丟入x: for img in links: if img.find_parent(class_="push"): x.append(img.text) 在之後爬網頁圖片的迴圈中加入 if href in x: continue 跳過x內的網址 就能只爬文章不爬留言了
請問Luka 大大, 關於表特爬蟲的那邊, 最後雖然有將圖片存成檔案, 但檔案卻打不開, python 點擊後顯示: Image not loaded Try to open it externally to fix format problem 實際去資料夾確認, 檔案大小位元為 0 ; 回去看執行結果中的url 與 正在下載圖片 的顯示網址用瀏覽器都是可以正常開啟的 再懇請大大協助解惑, 感謝您!
🔥【 Python 】給初學者的 2 小時爬蟲教學 (實作 4 個專案) (2023) 🔥
⭐章節目錄⭐
【 專案 1 - PTT NBA 版爬蟲 】爬蟲起步走!
🚗 0:00:00 爬蟲介紹
🚗 0:04:06 開始撰寫 PTT - 使用 Reuest 取得原始碼
🚗 0:11:02 進一步模仿使用者
🚗 0:17:43 使用 BeautifulSoup 解析 HTML 獲得資料
🚗 0:32:44 儲存成 JSON 格式
🚗 0:37:28 儲存成 Excel 格式
【 專案 2 - PTT 表特版爬蟲 】偽裝使用者Cookie
🚗 0:40:33 PTT 表特版爬蟲簡介
🚗 0:43:58 開始撰寫 PTT 表特版爬蟲
🚗 0:50:20 自動下載圖片
【 專案 3 - Hahow 好學校爬蟲 】學會如何爬取 Ajax 網頁
🚗 1:03:20 Ajax 爬蟲介紹
🚗 1:04:32 Hahow 爬蟲實戰 01 觀察網頁
🚗 1:10:52 Hahow 爬蟲實作
【 專案 4 - Yahoo 電影爬蟲 】找出最近好看的電影!(練習一下是否掌握爬蟲技巧)
🚗 1:19:54 Yahoo 爬蟲 電影列表
🚗 1:32:22 Yahoo 電影「下一頁」功能實作
【 先修教材 】
Python 教學: ruclips.net/video/lvH4-4iYjgs/видео.htmlsi=mdMAQs6BBGkHzcHV
HTML + CSS 教學: ruclips.net/video/fa214Ct6t9w/видео.html
謝謝你🎉
居然有提供字幕
實在太感謝了
這對通勤族來說十分的棒😊
通勤學程式 太認真了!
看過最高品質的教學,把網路上碎片化的信息結合濃縮成一部影片的效果超好!!!
謝謝稱讚!學習加油!
@@CodeShiba 專業戶,我來研究一下。
好人一生平安!
讚!
感謝啦!
講解得很清楚,教學速度也適中,初學者的福音~
謝謝稱讚!
感謝程式柴無私教學😄
謝謝支持
感謝大大無私分享
感謝支持!
解說的非常仔細,讓我們從不懂慢慢的跟著你學習,真的大推<
太感謝你的佛心😍😍😍😍😍
謝謝!
感謝分享
感謝推薦!
講的很好,學到了,感謝
謝謝支持!
謝謝老師教學
謝謝94狂
讲的很通俗易懂,老师好棒
謝謝支持
🎉🎉
在社團看到馬上來按讚😊
大感謝!
謝謝Luka大大 工作剛好要用到真方便
客氣了 感謝支持
感謝大大無私分享指導教學!
感謝支持!
感谢老师🤩
謝謝支持
好棒
Happy new year
Happy new year
謝謝老大
不客氣
我是从对岸来的 这学期布置的一个课堂作业就是要实现爬虫 宝藏视频啊 收藏了慢慢看
加油!
可以考虑用selenium
感Luka大大,從中學到很多!
不客氣
如何修改翻页爬取PTT NBA呢?参数传入参数,提示return request("get", url, params=params, **kwargs)
大大不好意思,我打開檢查元素跳到network按下重新整理,他都不會顯示東西ㄟ
但是waterfall那邊還是會有長長的線,就名稱那些都沒有東西
太恐怖了 我明明沒有這方面的需求
但我還是忍不點開還看完了 !
(看到下面的時間果然寫程式就是要熬夜xd)
初學者也能輕易寫出程式碼~老師很會教!
謝謝支持!
既然有反爬虫,那反反爬虫怎么做?到底爬虫厉害还是反扒厉害?
請問程式柴可以出python 爬蟲證交所公開資訊觀測站出的即時訊息的網路爬蟲+爬到的即時資料剖析結合line notify推播即時訊息的的教學嗎~
19小時課程中有股票價格鬧鐘小幫手 但不是爬證交所
不知道 大大有没有更进阶的教学,比如爬取小红书,脸书资讯的方法?因为这类大型的网站反爬虫的方法比较不一样,不知道如何分析。或者不方便放教学,有没有群组之类的可以加入讨论?
沒有 大網站反爬蟲隨時會改變 沒有通用的方法
想請問Luka, 1:01:45 用/分割那個部分,為何要設定最後一個呢?
你把整個列表印出來就懂了
列表的最後一格會是檔名
luka大大 我把你的爬蟲跟基礎教學都學完,也自己都打過一遍。
接下來會建議下一部分學習哪一部分
下一個推出的免費教學是SQL教學 你想學的主要是Python教學嗎
@@CodeShiba 是的 主要是做數據分析跟股票api
有考慮付費課程,教更進階的python使用嗎@@CodeShiba
@@1個顗任 有的,六小時教學那邊我有開一個 19 小時的付費課程,價格不貴,可以參考看看。
@@CodeShiba 請問內容主要是教什麼部分
老师你的视频使用PPT做的吗,质量真高
類似ppt 我用Mac keynote做的
想詢問一下 本身是用vscode去使用 為什麼在用瀏覽器打開html的程式碼時 卻是只有文字沒有圖片 感謝!
不清楚你的程式碼怎麼寫的耶
應該是因為圖片沒讀到 所以會顯示圖片的敘述文字
請問一下爬蟲軟體可以用在商業用的大數據分析嗎? 有的話 要觀看哪個影片比較合適?
爬蟲的用處是蒐集資料呦 跟分析資料是不同的環節
我的 19 小時課程有相關概念,請參考 lihi1.com/1bUSS
真的是不錯的教學,看過後依照流程可以將結果爬出來.
在PTT網頁下載圖片為什麼都是0位元組,將爬下的網址用瀏覽器測試都可以顯示正常圖片,
爬取的網址沒問題但在寫入檔案為什莫會變成0位元組呢?下載其他的也正常執行沒出錯但圖片一樣為0
不知道是哪裡有問題?程式碼跟教學的一樣但就是圖片為0,請問老師這是什麼原因.謝謝耽誤您的時間.
有程式碼嗎 我試試看能不能重現問題
謝謝老師的教學,我想到是不是因為圖片已經不是PTT的網站了,所以我就試著在download的函數
加請求頭測試結果成功了,感謝老師的視頻教學。
@@kuo55tai讚!
我也遇到了相同問題,然後status_code一直都是429,也有試著加入header "user-agent": "curl/8.1.1",
"accept": "*/*" 也沒用...請問有人知道可能是什麼原因嗎?感謝大大的回覆
更正:
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
是這樣帶,但一樣還是沒用
請問一下,用ptt爬表特有辦法辨識文章的圖片和留言的圖片嗎?
如果用老師寫的方式,會連帶留言的圖片一起爬
想問老師有沒有方式可以只爬文章不爬留言
觀察一下文章區域外面包覆的html名稱來修改
感謝老師提點!
我發現留言的父級元素都有class_=push
我先創建列表x=[]
利用img.find_parent(class_="push")找到父級元素含有class_="push"的網址
將它們丟入x:
for img in links:
if img.find_parent(class_="push"):
x.append(img.text)
在之後爬網頁圖片的迴圈中加入
if href in x:
continue
跳過x內的網址
就能只爬文章不爬留言了
perfect!!
想請問.. 25:36這邊,title = a.find("div", class_="title") 的class_ 那個底線有什麼功用?只寫class好像也跑得動,弄不太清楚差異
class是python類別關鍵字 有機會出錯
瞭解了!謝謝~
很棒的教學 但我現在都叫CHATGPT寫了XD
哈哈 優秀
請問Luka 大大, 關於表特爬蟲的那邊, 最後雖然有將圖片存成檔案,
但檔案卻打不開, python 點擊後顯示:
Image not loaded
Try to open it externally to fix format problem
實際去資料夾確認, 檔案大小位元為 0 ;
回去看執行結果中的url 與 正在下載圖片 的顯示網址用瀏覽器都是可以正常開啟的
再懇請大大協助解惑, 感謝您!
看起來沒有儲存成功
程式碼貼上來看看
以下是跟著大大影片一起 key in 的程式碼:
import requests
from bs4 import BeautifulSoup
import os # 建立資料夾用的
def download_img(url, save_path) :
print(f"正在下載圖片:{url}")
response = requests.get(url)
with open(save_path, 'wb') as file:
file.write(response.content)
print("-" * 30)
def main():
url = "www.ptt.cc/bbs/Beauty/M.1686997472.A.FDA.html"
headers = {"Cookie" : "over18=1"}
response = requests.get(url, headers= headers)
soup = BeautifulSoup(response.text, "html.parser")
# print(soup.prettify())
spans= soup.find_all("span",class_="article-meta-value")
title = spans[2].text # 標題
# 1. 建立一個圖片資料夾
dir_name = f"images/{title}"
if not os.path.exists(dir_name):
os.makedirs(dir_name)
# 2. 找到網頁中的所有圖片
links = soup.find_all("a")
allow_file_name = ["jpg", "png", "jpeg", "gif"]
for link in links:
href = link.get("href")
if not href:
continue
file_name = href.split("/")[-1]
extension = href.split(".")[-1].lower() # split 表用甚麼當分隔符號
# print(extension)
if extension in allow_file_name :
print(f"檔案型態:{extension}")
print(f"url:{href}")
download_img(href,f"{dir_name}/{file_name}")
# print(href)
# 3. 如果是圖片的話下載
if __name__ == "__main__" :
main()
看起來youtube 好像不能直接貼程式碼, 貼完之後留言就不見了>_<
有嘗試請chatGPT 幫忙偵錯, 依系統建議的程式碼寫完後 出現以下錯誤碼:
圖片下載失敗: 429 Client Error: Unknown Error for url
再依系統建議 加入 import time ; 並在迴圈download_img 下面加了 time.sleep(5)
但是還是顯示一樣的錯誤碼 :圖片下載失敗: 429 Client Error: Unknown Error for url
@@CodeShiba Luka老師好,我也出現相同的問題,這是我的程式碼
def download_img(url, save_path):
print(f"正在下載圖片:{url}")
response = requests.get(url)
with open(save_path, "wb") as file:
file.write(response.content)
print("-" * 30)
@@milk-coffeedrink388我也遇到一样的问题,图像不能在pycharm中观看
想問有ajax call back 的應對方法嗎
Ajax有教呀 hahow就是ajax
第一个data_list=[ ]
里面什么都不填写值嘛?反正储存出来的josn里面 就只有个[ ],撒也没有东西
可惜大型網站都會限流,用程式抓資料一下就被擋了
欸 還是可爬 可以調整爬蟲頻率
不好意思~想請教一下,實作表特版抓圖片,執行後資料夾內的檔案都是0KB無法打開,可能的原因是什麼呢?
但是如果點擊執行後“正在一下載圖片”後的url圖片都能正常開啟
之前有人遇到好像是改user agent
@@CodeShiba 請問能詳細說嗎 我也是載下來圖片都是0k無法開啟 程式碼和您一樣 但我是使用VScode
在 requests 加上 user_agent 加上瀏覽器的資訊。模仿使用者,試試看能否成功。
@@CodeShiba 但我改了以後,卻還是顯示"An error occurred while loading the image...."(我是抓PTT的圖片來使用,程式撰寫也是跟老師一樣;而我點開圖片鏈結,會到imgur這個頁面。我不知道是不是imgur的問題?)
我今天測試了,在 requests 加上 headers(User-Agent) 後就可以正常下載圖片了,範例 :
def download_images(url, save_path):
print(f"正在下載圖片,url:{url}")
headers = {'User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'}
response = requests.get(url, headers=headers)
with open(save_path, 'wb') as file:
file.write(response.content)
print("-" * 30)
感觉python抓取到html元素后在交给js解析反而更简单些😅
真的嗎 你可以試試看
想問大大用的什麼電腦,推介用什麼電腦,或者不同程度推介的電腦?
Windows和mac我都有 Ram 買多一點跑比較順
@@CodeShiba 謝謝!那laptop,一體式的跟主機電腦分離的,會有差別嗎,或者好用的程度,還是都一樣?
Laptop方便攜帶 也可以外接螢幕 桌機擴充較容易 看看自己需求購入吧
@@CodeShiba thank you~😊
請問程式柴大大 有些網站是不是幾乎沒辦法爬? 例如我想爬google play 的評價 從network 裡面幾乎找不到相關可以爬的地方~
Google play我沒試過 我以為只能用手機讀取
不好意思,新手小白請問如何學習:抓取twitter 音訊空間的逐字稿(twitter spaces caption)
(目前的直播好像都可以自動產生逐字稿)
有嘗試用chatGPT、Claude、Bard實作都失敗
我沒用過耶 看看能不能把影片載下來 直接用whisper api轉成字幕比較快
@@CodeShiba twitter的音訊空間,網頁上本身就保存了現成逐字稿,但因為介面的關係,難以整段用複製擷取,用whisper反而花時間
@@vtulin3097 他可能是故意的 有時候字幕檔會用串流的方式做 (隨時間才從伺服器端下載)
@@CodeShiba 對,就是這個狀況,想請教能怎麼抓取
每段新的對話會生出一個新的html tag
,如果頁面不動是可以往前滑,但無法全選、複製
我不會python,因此試用過瀏覽器extension、對話式AI,但目前都做不到
@@vtulin3097 不建議這樣抓取啦 需要發出很多個請求才能獲得完整字幕檔 我自己也沒有這樣抓取過
初學者想詢問如果是網站裡每個標題裡面的文章內容有辦法爬嗎?
當然可以,先爬文章標題的文字和連結,然後一個頁面一個頁面爬
請問Python 如果要拿來編寫電梯運行程式該怎麼開始?
之後轉交給PCB廠商製作一體版是可行的嗎?
直接問電梯廠商啦
大大您好~ 我也是爬表特版圖片遇到下載下來的檔案無法開啟。
我觀察到如果imgur的連結前面有帶i (i.imgur...),則requests.get跑出來的response會跳Response 429 error。
但若把網址前面的i拿掉,那出來會是正常的Response 200。
如果把含i的連結直接用chrome跑跑看,網址會自動跳轉至不帶i的連結。
不知道這個現象是不是imgur的防爬蟲機制?
大大有沒有什麼方法可以解? 謝謝!!
之前有人遇過好像加個user agent就可以 或是你把網址在程式裡面改成完整的也可以
@@CodeShiba 加了user agent成功了! 感謝柴大!!
@@CodeShiba加入了user-agent及修改網址都無法耶
會教java嗎
會
谢谢程式柴老师的分享,我是来自福建的学员
可以建一个讨论组,方便大家遇到一些问题在群里面讨论吗?
感謝支持 討論區尚在規劃中 目前還未確定會開啟 有問題歡迎透過yt留言交流
同求討論區我遇到了一些問題
不好意思 這幾天不在晚回覆了
我開一個討論區也沒有高手可以回答你 > <
建議可以尋找已存在的Python討論區發問呦
@@CodeShiba 有推薦的嗎沒找到存在的爬蟲討論區
@@JeremyOp 直接找 Python 討論區即可,大部分寫 Python 的人都會寫爬蟲
老師 如果跑出 "遠端主機已強制關閉一個現存的連線" ,請問這個可以怎麼處理呢?
應該是爬得太快被拒 記得加上time.sleep 避免這種情況
我在爬取電影網站的時候選擇的是威尼斯的網站,但在爬取下一頁按鈕的時候發現他按鈕的li標籤不僅沒有class就連href的網址部分也只有全部網址的一部份,就是指後面有關page的部分,那我該如何改寫(我的code是照影片裡寫的
還是可以的 自己手動把原網誌加上去
大概像這樣?movie_date=&page=2?movie_date=&page=1?movie_date=&page=2
請問9:16沒有自動跳出可用瀏覽器,要點選哪邊開啟或著如何設定??
試試看這
在PyCharm中開啟瀏覽器通常是用於預覽你的程式碼的運行結果或訪問線上資源。你可以按照以下步驟來設定瀏覽器開啟方式:
1. 打開PyCharm。
2. 在菜單欄上,選擇 "File"(文件) > "Settings"(設定)(在Mac上是 "PyCharm" > "Preferences"(偏好設定))。
3. 在左側導覽欄中,展開 "Tools"(工具)部分,然後選擇 "Web Browsers"(網頁瀏覽器)。
4. 在右側的 "Default browser"(預設瀏覽器)下拉選單中,選擇你想要使用的瀏覽器,例如Chrome或Firefox。
5. 點擊 "OK" 保存設定。
這樣,當你在PyCharm中運行程式或點擊連結時,它應該會自動在你選擇的瀏覽器中開啟。如果仍然無法自動跳出可用瀏覽器,請確保你的瀏覽器已經安裝並正確設定在系統中。
@@CodeShiba 謝謝柴哥解答,雖然還是不行,但是不要糾結😂但如果有手動開啟localhost網頁的方法可以跟我說一下😆
我想請問關於hahow 爬蟲的部分
API是不是需要等很久才會跑出來,還是我找得不夠仔細
應該是一開始就會有 因為頁面渲染需要那隻api 如果要快速確認的話有filter過濾search關鍵字
了解!感謝你
(response.text,)print后跑出来的错误,attributeError:module 'response' has attribute 'text'
response没有text的属性
全部代碼貼出來看看 目前資訊看不出原因
請問一下有辦法教網站抓關鍵字自動購買的的爬蟲嗎
你想當黃牛嗎
請問 , 若我抓下來的資料 , 少很多 , 跟目前看到的程式碼不同 , 是哪裡出問題 ? 有沒有人可以解答 , 感謝 !! , 格式是 php
不知道耶 不知道可以爬什麼網頁 也不知道你怎麼寫的
一定要先修python哦
要喔 可以不用看完 但基本語法要會
有程式碼可以提供研究嗎
😄
暫時不打算提供呦 感覺讓同學自己打比較有意義
按照你的描述 是有json文件,但是没有任何东西
柴哥不好意思 表特版的那part我印出照片時他狀態碼顯示429該怎麼解
發請求發的太快速 被擋了 發慢點 每秒發一次 或是更多秒發一次
@@CodeShiba Luka大大您好, 我也遇到response.status_code == 429的狀況, 有試過for迴圈來增加delay或者只下載一張圖, 都還是會碰到429, 請問Luka大大有甚麼想法嗎? 謝謝
@@Maker12_14爬的頻率太高 被設成黑名單了
@@CodeShiba 謝謝Luka大大的回覆, 真是寶貴的一課
柴哥,爬出来的图片全部都损坏了是什么情况?
提供的資訊不夠無法判斷呦
就是爬出来的图片全部都是0kb的打不开,感觉应该是给反爬了@@CodeShiba
爬虫频率太高了,被检测了
@@camusLi-t7v你解决了吗,我也遇到一样的问题了
請問老師在撰寫 PTT 表特版爬蟲時,執行後回傳無法得檔案
資訊不足無法判斷出現什麼問題 我猜應該是沒有爬到網頁對應的元素 一步驟一步驟印出看看
Yahoo電影表示:....
哈 教學用 電影也不需要常常爬取
😂想学,看的头大😂
慢慢看 知識密度很高 這個影片我拍很久
Yahoo 電影網站沒了啊 😢
拍完一陣子 yahoo電影就消失了...
macbook 跟window的一样的吗?
一樣唷 先看我的Python教學建置環境
您好 程式柴先生 請問有甚麼其他管道可以聯繫您嗎 我這邊有很多問題想請教您 那怕是電子郵件也好
有什麼問題嗎 我沒有提供私人教學呦
表特版的好像沒辦法使用了
怎麼說
@@CodeShiba 就是圖片那邊會有出現顯示錯誤的訊息
好屌 這不是付費的 超佛心
謝謝支持
headers 显示是错误的
哪部分呢
好了
为何标题和人气 只爬出一条 出来
for循环注意⚠️
知识量巨大
謝謝肯定!
我是Mac使用者,用pycharm編輯程式時可以打出中文,但在輸出的地方卻無法打出中文,請問是要改什麼設定嗎?
不用改 按enter就會出現
@@CodeShiba 我的意思是,假設name=input("請輸入你的名字:")
print(name)按執行後,我無法在下面執行的地方打出中文字,只能打出英文,也就是它叫我輸入你的名字:但我打不出中文字,只能打出英文,請問這是為什麼?
@@ShirleyChang-l3j 要盲打啦 盲打之後按 enter 就會輸出中文字
爬了半天 撒也没爬出来😅
編程需要耐心的 這個是非常初階的爬蟲了 大部分時候也不會有人幫助你完成編程 該講的細節我都放在視頻裡了 能不能學起來要看你自己 加油
不好意思留言一直無法成功(貼程式碼的關係?) 問題在下面
這個 docs.google.com/document/d/123ucJcixBJgxZzdSTOxX4Qt_tQStp92lH7gTvDPhtpg/edit
@CodeShiba 麻煩您謝謝
我猜是終端機沒有安裝這個
在終端機" pip install openpyxl" 看看
已經有安裝過了@@1個顗任
为什么爬的都是乱码呢?
編碼要設定utf-8
@@CodeShiba 初学小白☺能否详细点说明在那个位置设定啊?谢谢
@@zhiweizhong-p6r 你把自己的 Code 貼上問 AI,然後加上「如果將編碼設定成 utf-8」這樣 AI 就會教你了
我在articles中定义了soup.find_all("div", class_="r-ent")后,在"title"和"nrec"定义后,只爬出来一条信息,我这边print(title.a.text)后,没有出现错误语录,故不用做if和else判断语句
貼Code出來我才知道呦
怎么加你微信或者 chat