>  기사  >  백엔드 개발  >  웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-24 16:26:363539검색

파이썬이 이렇게 강력하고 매력적일 줄은 몰랐습니다. 예전에는 사진을 볼 때마다 하나씩 복사해서 붙여넣곤 했었는데 이제는 프로그램을 사용해서 사진을 하나씩 저장할 수 있게 되었어요. 하나. 다음 기사에서는 Python3.6을 사용하여 Sogou 사진 웹 페이지에서 이미지를 크롤링하는 방법에 대한 관련 정보를 주로 소개합니다.

서문

요 며칠간 평소 궁금했던 크롤러 알고리즘에 대해 공부해봤습니다. 여기에 지난 며칠간 제가 경험한 몇 가지를 적어보겠습니다. 아래 텍스트를 입력하세요.

여기서는 크롤링 개체로 sogou를 사용합니다.

먼저 Sogou Pictures를 입력하고 배경화면 카테고리를 입력합니다(물론 Q_Q의 예시일 뿐입니다). 특정 웹사이트 데이터를 크롤링하려면 그에 대한 사전 이해가 필요하기 때문입니다. ...

웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

들어간 뒤, F12를 눌러 개발자 옵션으로 들어갑니다. 작성자는 크롬을 사용합니다.

이미지를 마우스 오른쪽 버튼으로 클릭>>확인

웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

필요한 이미지 src가 img 태그 아래에 있다는 것을 확인하여 먼저 Python 요청을 사용하여 이미지 구성 요소를 추출한 다음 img의 src를 얻은 다음 urllib.request.urlretrieve를 사용하여 사진을 하나씩 다운로드하여 일괄적으로 데이터를 얻는 목적을 달성하는 것이 좋습니다. 다음은 크롤링할 URL이 http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD라는 것을 프로그램에 알려야 합니다. 이 URL은 카테고리를 입력한 후 주소 표시줄에서 나옵니다. 이제 URL 주소를 이해했으니 즐거운 코딩 시간을 시작하겠습니다.

이 크롤러 프로그램을 작성할 때 작업의 모든 단계가 올바른지 확인하기 위해 단계별로 디버깅하는 것이 가장 좋습니다. 프로그래머는 습관(Habit)을 해야 한다. 저자는 내가 프로그래머인지 모릅니다. 이 URL이 가리키는 웹페이지를 분석해 보겠습니다.

import requests
import urllib
from bs4 import BeautifulSoup
res = requests.get('http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD')
soup = BeautifulSoup(res.text,'html.parser')
print(soup.select('img'))

output:

웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

출력 콘텐츠에 우리가 원하는 이미지 요소가 포함되어 있지 않고 로고의 img만 구문 분석한 것으로 나타났습니다. 분명히 우리가 원하는 것이 아닙니다. 즉, URL http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD에는 필수 사진 정보가 없습니다. 따라서 요소가 동적일 수 있다고 간주됩니다. 주의 깊게 학생들은 웹 페이지에서 마우스 휠을 아래로 밀면 이미지가 동적으로 새로 고쳐집니다. 즉, 웹 페이지가 모든 리소스를 한 번에 로드하지 않는다는 것을 알 수 있습니다. 하지만 동적으로 리소스를 로드합니다. 이는 또한 웹페이지가 너무 커지거나 로딩 속도에 영향을 미치는 것을 방지합니다. 고통스러운 탐구는 아래에서 시작됩니다. 우리는 모든 사진의 실제 URL을 찾고 싶습니다. 작성자는 이에 대해 처음 접했고 이를 찾는 데 경험이 많지 않습니다. 마지막으로 찾은 위치는 F12>>Network>>XHR>>(XHR 아래의 파일 클릭)>>미리보기입니다.

웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

all_items를 클릭하면 다음 항목이 0 1 2 3... 하나씩 나타나는 것을 알 수 있습니다. 그림 요소가 됩니다. URL을 열어보세요. 찾아보니 정말 사진의 주소였네요. 목표물을 찾은 후. 두 번째 줄을 얻으려면 XHR 아래의 헤더

를 클릭하세요

요청 URL:

http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category= %E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1536&height=864, 불필요한 부분을 제거해 보십시오. 가능한 한 섹션을 삭제하는 것이 요령입니다. , 액세스는 영향을 받지 않습니다. 저자가 상영했습니다. 획득한 최종 URL: http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start =0&len=15 카테고리 뒤에 분류가 올 수 있다는 것을 아는 문자 그대로의 의미입니다. start는 시작 첨자이고, len은 길이, 즉 사진 수입니다. 자, 즐거운 코딩 시간을 시작해 보겠습니다.

개발 환경은 Win7 Python 3.6입니다. Python 실행 시 요청을 설치해야 합니다.

Python3.6에서는 요청을 설치하려면 CMD가 필요합니다.

pip install requests

작성자도 여기서 디버깅하고 작성하고 있으며 최종 코드는 여기에 게시됩니다.

import requests
import json
import urllib

def getSogouImag(category,length,path):
 n = length
 cate = category
 imgs = requests.get('http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+cate+'&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(n))
 jd = json.loads(imgs.text)
 jd = jd['all_items']
 imgs_url = []
 for j in jd:
  imgs_url.append(j['bthumbUrl'])
 m = 0
 for img_url in imgs_url:
   print('***** '+str(m)+'.jpg *****'+' Downloading...')
   urllib.request.urlretrieve(img_url,path+str(m)+'.jpg')
   m = m + 1
 print('Download complete!')

getSogouImag('壁纸',2000,'d:/download/壁纸/')

프로그램이 실행되기 시작했을 때 작성자는 여전히 약간 흥분했습니다. 와서 느껴보세요:

웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명

이제 크롤러 프로그램의 프로그래밍 과정에 대한 설명이 완료되었습니다. 전반적으로 요소를 크롤링해야 하는 URL을 찾는 것이 크롤링의 여러 측면에서 핵심입니다

위 내용은 웹 페이지에서 Sogou 이미지를 크롤링하는 Python의 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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