作者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://webptt.com/cn.aspx?n=bbs/Python/M.1494599454.A.3D4.html
1F:→ blc: 403是没权限,404才是不存在 05/12 22:41
2F:→ s860134: 只看他推文没图通灵解问题真的很难 05/13 09:36
3F:推 craig1122321: 感谢你!参考各位大大的回覆後问题已经解决 05/13 11:14
4F:→ craig1122321: s大,抱歉..我的错 下次我发文会把完整的错误内容都 05/13 11:15
5F:→ craig1122321: 送上来 感谢你 05/13 11:15