[Python] 웹 이미지나 PDF를 함수에 전송하고 저장 장치에 다운로드하지 않는 방법
3756 단어 Python
개시하다
온라인에 공개된 이미지와 PDF를 활용하려는 장면이 많지만, 일일이 다운로드해 저장 경로를 참조하지 않았나?
URL에서 직접 데이터를 가져와 사용하는 방법을 따로 저장하지 않는 방법에 대해 설명합니다.
메서드
결론부터 말하자면.
ByteesIO를 사용하세요.io
는 표준 프로그램 라이브러리이기 때문에 설치하지 않아도 사용할 수 있다.from io import BytesIO
사용 예
사용 예지만 후생노동성에서 신종 코로나바이러스의 양성자 수를 확보한 PDFtabula
에서 시계를 뽑아보자.
(참고로 tabula
는 PDF에서 표를 추출하는 함수 등을 포함하는 라이브러리의 이름이다.pip install tabula-py
에 설치할 수 있습니다.
우선, 데이터를 얻는 것부터 시작한다.requests
나 표준 라이브러리urllib
도 가능하지만 requests
사용하기 편하니까 저쪽으로 가세요.from requests import get
url = 'https://www.mhlw.go.jp/content/10906000/000699602.pdf'
content = get(url).content
이렇게 하면 PDF의 데이터가 바이트 열로 저장됩니다.
바이트열을 직접 사용할 수 있는 함수content
는 필요하지 않지만, 대부분의 파일 처리 함수는 PC의 경로를 매개 변수로 한다.
사용BytesIO
바이트열을 이런 함수에 전달할 수 있다.from tabula import read_pdf
pdf_data = BytesIO(content)
df = read_pdf(pdf_data, pages='1', multiple_tables=False)[0]
df
결실
추출의 정밀도는 그런대로 괜찮지만, 우선 말하지 않아도 정상적으로 데이터를 전달할 수 있다.
사진 한번 해볼래요?import matplotlib.pyplot as plt
url = 'https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F501281%2F428a2cd3-9005-a88d-85fa-648fe37c9618.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=21e8bcf27cad307545ed42fe9dfeaf31'
img = plt.imread(BytesIO(get(url).content))
plt.imshow(img)
plt.show()
결실
OK
최후
수용자의 함수와 상성에 따라 반드시 만능은 아니지만 사용 기회가 많기 때문에 기억하면 진전이 있을 수 있다.
Reference
이 문제에 관하여([Python] 웹 이미지나 PDF를 함수에 전송하고 저장 장치에 다운로드하지 않는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Cartelet/items/2b74737c20936a2ab955
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
결론부터 말하자면.
ByteesIO를 사용하세요.
io
는 표준 프로그램 라이브러리이기 때문에 설치하지 않아도 사용할 수 있다.from io import BytesIO
사용 예
사용 예지만 후생노동성에서 신종 코로나바이러스의 양성자 수를 확보한 PDFtabula
에서 시계를 뽑아보자.
(참고로 tabula
는 PDF에서 표를 추출하는 함수 등을 포함하는 라이브러리의 이름이다.pip install tabula-py
에 설치할 수 있습니다.
우선, 데이터를 얻는 것부터 시작한다.requests
나 표준 라이브러리urllib
도 가능하지만 requests
사용하기 편하니까 저쪽으로 가세요.from requests import get
url = 'https://www.mhlw.go.jp/content/10906000/000699602.pdf'
content = get(url).content
이렇게 하면 PDF의 데이터가 바이트 열로 저장됩니다.
바이트열을 직접 사용할 수 있는 함수content
는 필요하지 않지만, 대부분의 파일 처리 함수는 PC의 경로를 매개 변수로 한다.
사용BytesIO
바이트열을 이런 함수에 전달할 수 있다.from tabula import read_pdf
pdf_data = BytesIO(content)
df = read_pdf(pdf_data, pages='1', multiple_tables=False)[0]
df
결실
추출의 정밀도는 그런대로 괜찮지만, 우선 말하지 않아도 정상적으로 데이터를 전달할 수 있다.
사진 한번 해볼래요?import matplotlib.pyplot as plt
url = 'https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F501281%2F428a2cd3-9005-a88d-85fa-648fe37c9618.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=21e8bcf27cad307545ed42fe9dfeaf31'
img = plt.imread(BytesIO(get(url).content))
plt.imshow(img)
plt.show()
결실
OK
최후
수용자의 함수와 상성에 따라 반드시 만능은 아니지만 사용 기회가 많기 때문에 기억하면 진전이 있을 수 있다.
Reference
이 문제에 관하여([Python] 웹 이미지나 PDF를 함수에 전송하고 저장 장치에 다운로드하지 않는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Cartelet/items/2b74737c20936a2ab955
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from requests import get
url = 'https://www.mhlw.go.jp/content/10906000/000699602.pdf'
content = get(url).content
from tabula import read_pdf
pdf_data = BytesIO(content)
df = read_pdf(pdf_data, pages='1', multiple_tables=False)[0]
df
import matplotlib.pyplot as plt
url = 'https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F501281%2F428a2cd3-9005-a88d-85fa-648fe37c9618.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&s=21e8bcf27cad307545ed42fe9dfeaf31'
img = plt.imread(BytesIO(get(url).content))
plt.imshow(img)
plt.show()
수용자의 함수와 상성에 따라 반드시 만능은 아니지만 사용 기회가 많기 때문에 기억하면 진전이 있을 수 있다.
Reference
이 문제에 관하여([Python] 웹 이미지나 PDF를 함수에 전송하고 저장 장치에 다운로드하지 않는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Cartelet/items/2b74737c20936a2ab955텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)