라이브러리의 사용;
수입 요청이 가져올 운영 체제 에서 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('抓取完毕')