Heim  >  Artikel  >  Backend-Entwicklung  >  Einfache Beispielanalyse zur Implementierung von Crawler-Bildern in Python

Einfache Beispielanalyse zur Implementierung von Crawler-Bildern in Python

黄舟
黄舟Original
2017-06-04 10:14:551725Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zur einfachen Implementierung des PythonCrawlersBild vorgestellt. Freunde, die es benötigen, können sich auf

Die einfache Implementierung beziehen des Python-Crawler-Bildes

Ich stöbere oft in Zhihu und manchmal möchte ich einige Bilder von Fragen zusammen speichern. Daher dieses Programm. Dies ist ein sehr einfaches Bild-Crawler-Programm, das nur den Teil des Bildes crawlen kann, der ausgebürstet wurde. Da ich mit diesem Teil des Inhalts nicht vertraut bin, werde ich nur ein paar Worte sagen und den Code aufzeichnen, ohne zu viel zu erklären. Bei Interesse können Sie es direkt nutzen. Persönliche Tests sind auf Websites wie Zhihu verfügbar.

Im vorherigen Artikel wurde erklärt, wie man Bilder über URLs öffnet. Der Zweck besteht darin, zunächst zu sehen, wie die gecrawlten Bilder aussehen, und sie dann zu filtern und zu speichern.

Die Anforderungsbibliothek wird hier zum Abrufen von Seiteninformationen verwendet. Es ist zu beachten, dass beim Abrufen von Seiteninformationen ein Header benötigt wird, um das Programm als Browser für den Zugriff auf den Server zu tarnen. andernfalls kann es vom Server abgelehnt werden. Verwenden Sie dann BeautifulSoup, um überschüssige Informationen zu filtern und die Bildadresse zu erhalten. Nachdem Sie das Bild erhalten haben, filtern Sie einige kleine Bilder wie Avatare und Emoticons basierend auf der Bildgröße heraus. Schließlich haben Sie beim Öffnen oder Speichern von Bildern mehr Auswahlmöglichkeiten, einschließlich OpenCV, Skimage, PIL usw.

Der Ablauf ist wie folgt:

# -*- 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"处理完成!"

Das obige ist der detaillierte Inhalt vonEinfache Beispielanalyse zur Implementierung von Crawler-Bildern in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn