멀티 프로세스 파이썬 크롤링는 백과 사전의 이미지를 망신

라이브러리의 사용;

수입 요청이
 가져올 운영 체제
 에서 BS4의 수입 BeautifulSoup로의
 수입 시간
 에서 멀티 프로세싱 수입 수영장

커스텀 이미지 저장 경로;

= R & LT 경로 ' E : \ 러 \ 0805 \\ '

요청 헤더, 아날로그 브라우저 요청;

브라우저의 위치에서 F12 키를 눌러 개발자 모드를 엽니 다;

 

헤더 = {
     ' 사용자 에이전트 ' : ' 모질라 / 5.0 (윈도우 NT 6.1; WOW64) AppleWebKit / 537.36 (게코 같은 KHTML) 크롬 / 65.0.3325.181 사파리 / 537.36 ' 
}

 주요 기능;

데프 get_images (URL) : 
    데이터 = ' HTTPS : ' 
    고해상도 = requests.get (URL, 헤더 = 헤더) 
    수프 = BeautifulSoup로 (res.text, ' LXML ' ) 
    url_infos = soup.select ( ' div.thumb> A> IMG ' )
     #의 인쇄 (url_infos) 
    에 대한 url_info url_infos가 :
         시도 : 
            된 URL = 데이터 + url_info.get ( ' SRC ' )
             의 경우 os.path.exists (경로 + urls.split ( ' /' ) - 1. ]) :
                 인쇄 ( ' 이미지 다운로드 ' )
             다른 : 
                이미지 = requests.get (URL을, 헤더 = ) 헤더를 
                열기로 (경로 + urls.split ( ' / ' ) -. 1, ' WB ' ) FP AS : 
                    fp.write (image.content) 
                전단 ( ' 다운로드 : ' + 의 URL) 
                time.sleep ( 0.5 )
         외에는 E AS 예외 :
             전단 (E)

크롤러를 시작합니다;

IF  __name__ == ' __main__ ' :
     #의 경로리스트 
    된 URL = [ ' https://www.qiushibaike.com/imgrank/page/{}/ ' .format (I) 에 대한 I  범위 (1,14 )]
     # 열려 크롤링 다중 프로세스 
    풀을 = 풀 () 
    pool.map (get_images, URL을) 
    인쇄 ( " 완료 파 ' )

크롤링;

폴더를 열어 결과를 크롤링 볼 수 있습니다;

 

끝난

전체 코드;

import requests
import os
from bs4 import BeautifulSoup
import time
from multiprocessing import Pool
"""
************常用爬虫库***********
       requests
       BeautifulSoup
       pyquery 
       lxml
************爬虫框架***********
       scrapy
       三大解析方式:re,css,xpath
"""
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
path = r'E:\爬虫\0805\\'
def get_images(url):
    data = 'https:'
    res = requests.get(url,headers=headers)
    soup = BeautifulSoup(res.text,'lxml')
    url_infos = soup.select('div.thumb > a > img')
    # print(url_infos)
    for url_info in url_infos:
        try:
            urls = data+url_info.get('src')
            if os.path.exists(path+urls.split('/')[-1]):
                print('图片已下载')
            else:
                image = requests.get(urls,headers=headers)
                with open(path+urls.split('/')[-1],'wb') as fp:
                    fp.write(image.content)
                print('正在下载:'+urls)
                time.sleep(0.5)
        except Exception as e:
            print(e)

if __name__ == '__main__':
    # 路由列表
    urls = ['https://www.qiushibaike.com/imgrank/page/{}/'.format(i) for i in range(1,14)]
    # 开启多进程爬取
    pool = Pool()
    pool.map(get_images,urls)
    print('抓取完毕')

 

추천

출처www.cnblogs.com/nmsghgnv/p/11306815.html