ホームページ  >  記事  >  バックエンド開発  >  Python でクローラ イメージを実装する方法の簡単な分析例

Python でクローラ イメージを実装する方法の簡単な分析例

黄舟
黄舟オリジナル
2017-06-04 10:14:551725ブラウズ

この記事では主にPythonクローラー画像の簡単な実装に関する関連情報を紹介しますので、必要な友達は

Pythonクローラー画像の簡単な実装

を参照してください。私はよくZhihuを訪問し、時々願っています。いくつかの問題を解決するために、写真は一緒に保存されます。そこでこのプログラム。これは、画像のブラシをかけられた部分のみをクロールできる、非常にシンプルな画像クローラー プログラムです。私はこの部分の内容に詳しくないので、あまり説明せずに少しだけ言ってコードを記録します。ご興味がございましたら、直接ご利用いただけます。個人テストは Zhihu などの Web サイトで利用できます。

前の記事では、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。