Re: [問題] Dcard圖片爬蟲遇到https該如何解決

看板Python作者 (貓橘毛發呆雕像)時間7年前 (2017/05/12 22:30), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串2/2 (看更多)
我沒猜錯的話,完整的 OSError 應該是像這樣: OSError: [Errno 22] Invalid argument: \ './imgs/https://imgur.dcard.tw/WfKJkoB.jpg' 這檔名不合法的 Error 應該很顯而易見吧..... 另外 status 403 表示存取的網址不存在,和 https 應該也是完全沒有關係 至於為什麼會不存在... 看圖床是不是有轉址或是你抓到 url 有問題之類的吧。 btw, 有用 requests 的話 urlopen 根本完全沒必要...... requests 底層是 urllib3 是參考 urllib 寫的。 你如果是餵不到 requests 怎麼存圖片的話, keyword 用 "requests save image" 就會有了。 ※ 引述《craig1122321 (半醉夜貓)》之銘言: : 如題 下方為程式碼 : import requests ,threading : from bs4 import BeautifulSoup : from urllib.request import urlopen : headers ={ : 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 : (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36' : } : url = ('http://www.dcard.tw/f/photography/p/226364232.html') : res = requests.get(url , headers = headers) : soup = BeautifulSoup(res.text, "html.parser") : imgs = soup.select('img') : for img in imgs: : try: : fn = img['src'] : print(fn) : img=urlopen(fn) : except Exception as e: : print (e) : continue : with open('./imgs/' + str(fn), 'wb') as f: : f.write(img.read()) : 上面的url為測試用網址。 : 我有google爬過文 : 有看到一種寫法是if re.match(r'^https?://(i.)?(m.)?imgur.com', link['href']): : 不過因為Dcard的圖檔是存在src裡 不知該如何修改 第一次發文有錯誤煩請指導 : 感謝各位大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.76.218 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1494599454.A.3D4.html

05/12 22:41, , 1F
403是沒權限,404才是不存在
05/12 22:41, 1F

05/13 09:36, , 2F
只看他推文沒圖通靈解問題真的很難
05/13 09:36, 2F

05/13 11:14, , 3F
感謝你!參考各位大大的回覆後問題已經解決
05/13 11:14, 3F

05/13 11:15, , 4F
s大,抱歉..我的錯 下次我發文會把完整的錯誤內容都
05/13 11:15, 4F

05/13 11:15, , 5F
送上來 感謝你
05/13 11:15, 5F
文章代碼(AID): #1P5SSUFK (Python)
文章代碼(AID): #1P5SSUFK (Python)