作者zerof (貓橘毛發呆雕像)
看板Python
標題Re: [問題] Dcard圖片爬蟲遇到https該如何解決
時間Fri May 12 22:30:50 2017
我沒猜錯的話,完整的 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
→ blc: 403是沒權限,404才是不存在 05/12 22:41
→ s860134: 只看他推文沒圖通靈解問題真的很難 05/13 09:36
推 craig1122321: 感謝你!參考各位大大的回覆後問題已經解決 05/13 11:14
→ craig1122321: s大,抱歉..我的錯 下次我發文會把完整的錯誤內容都 05/13 11:15
→ craig1122321: 送上來 感謝你 05/13 11:15