首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载无扩展名的验证码镜像

下载无扩展名的验证码镜像
EN

Stack Overflow用户
提问于 2017-01-20 08:37:06
回答 1查看 845关注 0票数 1

如何使用PIL或其他图像操作库下载this验证码图像,我尝试了几种方法,但无法下载图像。

代码语言:javascript
复制
from PIL import Image
import urllib2 as urllib
import io

fd = urllib.urlopen("https://notacarioca.rio.gov.br/senhaweb/CaptchaImage.aspx?guid=9759fc80-d385-480a-aa6e-8e00ef20be7b&s=1")
image_file = io.BytesIO(fd.read())
im = Image.open(image_file)
print im
EN

回答 1

Stack Overflow用户

发布于 2017-11-01 18:27:55

您尝试下载的图像没有静态url。

链路工作正常:

同样的链接不再起作用:

这意味着你不能使用静态url来引用图片(urllib.urlopen("https://notacarioca.rio.gov.br/senhaweb/CaptchaImage.aspx?guid=9759fc80-d385-480a-aa6e-8e00ef20be7b&s=1")不起作用)。

这是我使用RequestsBeautifulSoup的解决方案

代码语言:javascript
复制
import requests
from mimetypes import guess_extension
from bs4 import BeautifulSoup
from urllib.parse import urljoin
# from PIL import Image
# from io import BytesIO

s = requests.session()
r = s.get("https://notacarioca.rio.gov.br/senhaweb/login.aspx")

if r.status_code == 200:
    soup = BeautifulSoup(r.content, "html.parser")
    div = soup.find("div", attrs={"class": "captcha", "style": "color:Red;width:100%;"})

    r = s.get(urljoin("https://notacarioca.rio.gov.br/senhaweb/", div.img["src"]))
    if r.status_code == 200:
        guess = guess_extension(r.headers['content-type'])
        if guess:
            with open("captcha" + guess, "wb") as f:
                f.write(r.content)
            # Image.open(BytesIO(r.content)).show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41754219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档