>  기사  >  백엔드 개발  >  Python에서 크롤러 이미지를 구현하는 방법에 대한 간단한 예제 분석

Python에서 크롤러 이미지를 구현하는 방법에 대한 간단한 예제 분석

黄舟
黄舟원래의
2017-06-04 10:14:551696검색

이 글에서는 Python 크롤러images의 간단한 구현에 대한 관련 정보를 주로 소개합니다. 필요한 친구들은

Python 크롤러 이미지의 간단한 구현

Zhihu를 자주 방문하고 때로는 바랍니다. 일부 문제를 해결하기 위해 사진이 함께 저장됩니다. 그러므로 이 프로그램. 이것은 브러시 아웃된 이미지 부분만 크롤링할 수 있는 매우 간단한 이미지 크롤러 프로그램입니다. 이 부분의 내용은 잘 알지 못하기 때문에 많은 설명은 생략하고 몇마디만 말하고 코드만 기록하겠습니다. 관심이 있으신 분은 직접 이용해 보시기 바랍니다. 개인 테스트는 Zhihu와 같은 웹사이트에서 가능합니다.

이전 글에서는 URL을 통해 이미지를 여는 방법을 공유했는데, 그 목적은 먼저 크롤링된 이미지가 어떻게 보이는지 확인한 다음 필터링하여 저장하는 것입니다.

요청 라이브러리는 페이지 정보를 얻는 데 사용됩니다. 페이지 정보를 얻을 때 서버에 액세스하기 위해 프로그램을 브라우저로 위장하기 위해 header가 필요합니다. 그렇지 않으면 서버에서 거부될 수 있습니다. . 그런 다음 BeautifulSoup을 사용하여 과도한 정보를 필터링하여 이미지 주소를 가져옵니다. 사진을 가져온 후 사진 크기에 따라 아바타, 이모티콘과 같은 작은 사진을 필터링하세요. 마지막으로 OpenCV, skimage, PIL 등을 포함하여 이미지를 열거나 저장할 때 더 많은 선택권이 있습니다.

절차는 다음과 같습니다.

# -*- coding=utf-8 -*-
import requests as req
from bs4 import BeautifulSoup
from PIL import Image
from io import BytesIO
import os
from skimage import io

url = "https://www.zhihu.com/question/37787176"
headers = {'User-Agent' : 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Mobile Safari/537.36'}
response = req.get(url,headers=headers)
content = str(response.content)
#print content

soup = BeautifulSoup(content,'lxml')
images = soup.find_all('img')
print u"共有%d张图片" % len(images)

if not os.path.exists("images"):
  os.mkdir("images")

for i in range(len(images)):
  img = images[i]
  print u"正在处理第%d张图片..." % (i+1)
  img_src = img.get('src')
  if img_src.startswith("http"):
    ## use PIL
    '''
    print img_src
    response = req.get(img_src,headers=headers)
    image = Image.open(BytesIO(response.content))
    w,h = image.size
    print w,h
    img_path = "images/" + str(i+1) + ".jpg"
    if w>=500 and h>500:
      #image.show()
      image.save(img_path)

    '''

    ## use OpenCV
    import numpy as np
    import urllib
    import cv2

    resp = urllib.urlopen(img_src)

    image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    w,h = image.shape[:2]
    print w,h
    img_path = "images/" + str(i+1) + ".jpg"
    if w>=400 and h>400:
      cv2.imshow("Image", image)
      cv2.waitKey(3000)
      ##cv2.imwrite(img_path,image)

    ## use skimage

    ## image = io.imread(img_src)
    ## w,h = image.shape[:2]
    ## print w,h
    #io.imshow(image)
    #io.show()

    ## img_path = "images/" + str(i+1) + ".jpg"
    ## if w>=500 and h>500:
      ## image.show()
      ## image.save(img_path)
      ## io.imsave(img_path,image)

print u"处理完成!"

위 내용은 Python에서 크롤러 이미지를 구현하는 방법에 대한 간단한 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.