Python 파충류 가 지정 한 웹 페이지 그림 코드 인 스 턴 스 를 캡 처 합 니 다.

지정 한 웹 페이지 의 그림 을 얻 으 려 면 다음 과 같은 세 가지 절차 가 필요 합 니 다.
(1)사이트 링크 를 지정 하고 이 사이트 의 소스 코드 를 캡 처 합 니 다(구 글 브 라 우 저 를 사용 하면 마우스 오른쪽 단 추 를 누 릅 니 다->Inspect->Elements 의 html 내용)
(2)캡 처 할 내용 에 따라 정규 표현 식 을 설정 하여 캡 처 할 내용 과 일치 하도록 합 니 다.
(3)순환 목록 을 설정 하고 내용 을 반복 해서 캡 처 하고 저장 합 니 다.
다음은 지 정 된 웹 페이지 의 그림 을 캡 처 하 는 두 가지 방법 을 소개 한다.
(1)방법 1:정규 표현 식 으로 잡 은 html 내용 문자열 을 걸 러 냅 니 다.

#              
import urllib.request # python      url  
import re #      


#      url,  url html    
def getHtmlCode(url):
  #                       ,                           
  headers = {
    'User-Agent': 'Mozilla/5.0(Linux; Android 6.0; Nexus 5 Build/MRA58N) \
    AppleWebKit/537.36(KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36'
  }
  #  headers     url,       
  url = urllib.request.Request(url, headers=headers)

  #  url            
  page = urllib.request.urlopen(url).read()
  #      
  page = page.decode('UTF-8')
  return page


#      html    ,       img  ,        
def getImage(page):
  # [^\s]*?       ,               
  # imageList = re.findall(r'(https:[^\s]*?(png))"', page)
  imageList = re.findall(r'(https:[^\s]*?(jpg|png|gif))"', page)
  x = 0
  #     
  for imageUrl in imageList:
    try:
      print('    : %s' % imageUrl[0])
      #   image               
      image_save_path = './image/%d.png' % x
      #                
      urllib.request.urlretrieve(imageUrl[0], image_save_path)
      x = x + 1
    except:
      continue
  pass
if __name__ == '__main__':
  #         
  url = "https://www.cnblogs.com/ttweixiao-IT-program/p/13324826.html"
  #          
  page = getHtmlCode(url)
  #             
  getImage(page)
  # print(page)
코드 에서 수정 해 야 할 것 은 imageList=re.findall(r')(https:[^\s]*?(jpg|png|gif)","page)"라 는 내용 을 캡 처 하려 는 내용 에 따라 정규 표현 식 을 어떻게 설계 하 는 지 설정 해 야 합 니 다.나의 디자인 출처 는 다음 과 같다.

이 페이지 의 그림 은 모두 png 형식 이기 때문에 imageList=re.findall(r)(https:[^\s]*?(png)","page"도 가능 합 니 다.
(2)방법 2:BeautifulSoup 라 이브 러 리 로 html 페이지 분석

from bs4 import BeautifulSoup # BeautifulSoup python  HTML/XML    , Python         
import urllib # python      url  


#      url,  url html    
def getHtmlCode(url):
  #                       ,                           
  headers = {
    'User-Agent': 'Mozilla/5.0(Linux; Android 6.0; Nexus 5 Build/MRA58N) \
    AppleWebKit/537.36(KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36'
  }
  #  headers     url,       
  url = urllib.request.Request(url, headers=headers)

  #  url            
  page = urllib.request.urlopen(url).read()
  #      
  page = page.decode('UTF-8')
  return page


#      html    ,       img  ,        
def getImage(page):
  #   html      
  soup = BeautifulSoup(page, 'html.parser')
  #      DOM    
  print(soup.prettify())
  #       img     ,   Html             <img src="..." alt=".." />
  imgList = soup.find_all('img')
  x = 0
  #          ,  ,        2     ,    debug                
  for imgUrl in imgList[1:]:
    print('    : %s ' % imgUrl.get('src'))
    #   scr   ,       Url     , 'https://img2020.cnblogs.com/blog/1703588/202007/1703588-20200716203143042-623499171.png'
    image_url = imgUrl.get('src')
    #   image               
    image_save_path = './image/%d.png' % x
    #                
    urllib.request.urlretrieve(image_url, image_save_path)
    x = x + 1
if __name__ == '__main__':
  #         
  url = 'https://www.cnblogs.com/ttweixiao-IT-program/p/13324826.html'
  #          
  page = getHtmlCode(url)
  #             
  getImage(page)
이 두 가지 방법 은 각각 장단 점 이 있 습 니 다.저 는 이 두 가지 방법 을 유연 하 게 결합 하여 사용 할 수 있다 고 생각 합 니 다.예 를 들 어 먼저 사용 방법 2 에서 지정 한 라벨 의 방법 으로 찾 아야 할 내용 범 위 를 좁 힌 다음 에 정규 표현 식 으로 원 하 는 내용 과 일치 하 게 하면 더욱 간결 하고 명료 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기