Re: [問題] Dcard圖片爬蟲遇到https該如何解決
我沒猜錯的話,完整的 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
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
05/13 11:15, 4F
→
05/13 11:15, , 5F
05/13 11:15, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):