1. 程式人生 > >多執行緒爬取圖片網(分類儲存到資料夾)

多執行緒爬取圖片網(分類儲存到資料夾)

import requests
import re
from bs4 import BeautifulSoup
import os
from lxml import etree
from multiprocessing import Process,Pool
# 運用幾種常見的解析方式解析html

INDEX_URL = 'http://www.ivsky.com/tupian/ziranfengguang/'


class ImageSpider(object):

    def __init__(self):
        self.base_url = 'http://www.ivsky.com/tupian/ziranfengguang/'
self.headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0' } def get_html(self,url,title=None): ''' :param url: 請求得分url地址 :return: 響應資料 ''' try: response = requests.get(url) if
response.status_code == 200: return response.text,title except Exception as e: print('請求失敗,失敗原因{}'.format(e)) # 解析列表頁資料 def parse_list_page(self,html): # 建立bs物件 bs = BeautifulSoup(html,'lxml') # .ali div a a_list = bs.select('.ali div a'
) for a in a_list: # 找到詳情頁的連結地址 href = a.get('href') title = a.get('title') # 建立資料夾目錄 path = 'images/'+title # yield 返回的是生成器物件,並且不會造成程式結束 detail_url = 'http://www.ivsky.com' + href yield detail_url, title if os.path.exists(path): continue os.mkdir(path) def parse_detail_page(self,args): # 取出html 和 title html = args[0] title = args[1] print('開始下載:{}'.format(title)) if html: # 解析資料 doc = etree.HTML(html) imgs = doc.xpath('//ul[@class="pli"]/li/div/a/img/@src') for src in imgs: src = str(src) # 圖片名稱 name = src.split('/')[-1] # 圖片存放路徑 path = 'images/'+title+'/'+ name response= requests.get(src,headers = self.headers) with open(path,'wb') as f: f.write(response.content) # 執行請求拿回html的回撥函式 def main(self,args): # 返回的資料是兩個,0是html原始碼 html = args[0] if isinstance(html,tuple): html = html[0] next_page = re.search(re.compile(r"<a class='page-next' href='(.*?)'>"),html) if next_page: # 找到下一頁的連結 next_url = 'http://www.ivsky.com'+next_page.group(1) # 回撥main函式 next_html = self.get_html(next_url) self.main((next_html,None)) else: print('已經到達最後一頁了') # 解析列表頁資料 result = self.parse_list_page(html) detail_pool = Pool(3) for url,title in result: # 1.獲取html 2.解析詳情頁 detail_pool.apply_async(func=self.get_html,args=(url,title),callback=self.parse_detail_page) detail_pool.close() detail_pool.join() if __name__ == '__main__': img = ImageSpider() pool = Pool(1) pool.apply_async(func=img.get_html,args=('http://www.ivsky.com/tupian/ziranfengguang/',),callback=img.main) pool.close() pool.join()

相關推薦

執行圖片(分類儲存資料)

import requests import re from bs4 import BeautifulSoup import os from lxml import etree from multiprocessing import Process,Pool #

執行圖片(生產者-消費者模式)

通過生產者-消費者模式實現多執行緒爬取圖片:   1、生產者通過不斷爬取網頁中圖片的url存入圖片佇列中   2、消費者通過圖片佇列中的url爬取圖片並下載到本地   3、多執行緒的方式,爬取與下載同時進行,直到子執行緒結束,輸出爬取時間   1 #多執行緒下載圖片 2 #生產者

爬蟲記錄(4)——執行圖片並下載

還是繼續前幾篇文章的程式碼。 當我們需要爬取的圖片量級比較大的時候,就需要多執行緒爬取下載了。這裡我們用到forkjoin pool來處理併發。 1、DownloadTask下載任務類 package com.dyw.crawler.util;

【Python3爬蟲-圖片執行中國國家地理全站美圖,圖可以提高你的審美哦

宣告:爬蟲為學習使用,請各位同學務必不要對當放網站或i伺服器造成傷害。務必不要寫死迴圈。 - 思路:古鎮——古鎮列表(迴圈獲取古鎮詳情href)——xx古鎮詳情(獲取所有img的src) - 1.  單分類爬: from bs4 import BeautifulSo

Python爬蟲入門教程 10-100 圖蟲執行

寫在前面 經歷了一頓噼裡啪啦的操作之後,終於我把部落格寫到了第10篇,後面,慢慢的會涉及到更多的爬蟲模組,有人問scrapy 啥時候開始用,這個我預計要在30篇以後了吧,後面的套路依舊慢節奏的,所以莫著急了,100篇呢,預計4~5個月寫完,常見的反反爬後面也會寫的,還有fuck login類的內容。

Python爬蟲教程:圖蟲執行

我們這次也玩點以前沒寫過的,使用python中的queue,也就是佇列 下面是我從別人那順來的一些解釋,基本爬蟲初期也就用到這麼多 Python學習資料或者需要程式碼、視訊加Python學習群:960410445 1. 初始化: classQueue.Queue(maxsize)FIFO

Python爬蟲入門教程 10-100 圖蟲執行

寫在前面 經歷了一頓噼裡啪啦的操作之後,終於我把部落格寫到了第10篇,後面,慢慢的會涉及到更多的爬蟲模組,有人問 scrapy 啥時候開始用,這個我預計要在30篇以後了吧,後面的套路依舊慢節奏的,所以莫著急了,100篇呢,預計4~5個月寫完,常見的反反爬後面也會寫的,還有fuck login類的

Python 爬蟲執行美女圖片儲存到本地

Wanning 我們不是生產者,我們只是搬運工 資源來至於 ,程式碼基於Python 3.5.2 友情提醒:血氣方剛的騷年。請 謹慎 閱圖 !!! 謹慎 閱圖 !!! 謹慎 閱圖 !

執行鬥圖圖片

結果演示   程式碼: #encoding:utf-8 # __author__ = 'donghao' # __time__ = 2018/12/24 15:20 import requests import threading import urllib.re

執行易雲歌曲評論

之前用爬蟲爬取了拉鉤網的崗位資訊,而那個效率比較低,現在略作升級,做成多執行緒,目標也換成了網易雲。首先在瀏覽器上開啟網易雲音樂,找到想要爬取的歌曲,我選擇的是《一直很安靜》,開啟開發者工具,找到網路,在html的響應中並未找到歌曲評論,再到xhr中找,很容易就能找到一個名為

spider----利用執行51job案例

程式碼如下 import json from threading import Thread from threading import Lock from queue import Queue import requests from bs4 import BeautifulSoup i

Jsoup簡單例子2.0——執行網頁內的郵箱

上一篇文章講了利用Jsoup爬取貼吧帖子裡的郵箱,雖然爬取成功了,但我對效率有所追求。10頁的帖子爬取了兩百多個郵箱,最快用時8秒,一般需要9秒。在思考了一下怎麼提升效率後,決定採用多執行緒的方式爬取網頁內的郵箱。廢話不多說,直接上程式碼。 引入Jsoup的jar包此處省略,沒有的可以檢視上篇文

使用python的requests、xpath和執行糗事百科的段子

 程式碼主要使用的python中的requests模組、xpath功能和threading多執行緒爬取了糗事百科中段子的內容、圖片和閱讀數、段子作者的性別,年齡和頭像。 # author: aspiring import requests from lxml import

使用threading,queue,fake_useragent,requests ,lxml,執行嗅事百科13頁文字資料,爬蟲案例

#author:huangtao # coding=utf-8 #多執行緒庫 from threading import Thread #佇列庫 from queue import Queue #請求庫 from fake_useragent import UserAgent

java redis執行國美商品資訊

前面那篇爬蟲文章用的是單執行緒沒有用到其它一些比較提高效率的工具比較遺憾,所以今天做了一個比較全面的爬蟲。首先謝謝 @[天不生我萬古長](https://www.jianshu.com/u/e34019621ee9)這位小夥伴的留言,不然還真有點懶了。因為上班所以也只能利用

python執行網頁

#-*- encoding:utf8 -*- ''' Created on 2018年12月25日 @author: Administrator ''' from multiprocessing.dummy import Pool as pl import csv import requests fr

Python爬蟲入門教程 13-100 鬥圖啦表情包執行

寫在前面 今天在CSDN部落格,發現好多人寫爬蟲都在爬取一個叫做鬥圖啦的網站,裡面很多表情包,然後瞅了瞅,各種實現方式都有,今天我給你實現一個多執行緒版本的。關鍵技術點 aiohttp ,你可以看一下我前面的文章,然後在學習一下。 網站就不分析了,無非就是找到規律,拼接URL,匹配關鍵點,然後爬取。 擼

Python爬蟲入門教程 14-100 All IT eBooks執行

寫在前面 對一個爬蟲愛好者來說,或多或少都有這麼一點點的收集癖 ~ 發現好的圖片,發現好的書籍,發現各種能存放在電腦上的東西,都喜歡把它批量的爬取下來。 然後放著,是的,就這麼放著.......然後慢慢的遺忘掉..... 爬蟲分析 開啟網址 http://www.allitebooks.c

Python爬蟲教程:執行電子書

程式碼非常簡單,有咱們前面的教程做鋪墊,很少的程式碼就可以實現完整的功能了,最後把採集到的內容寫到  csv 檔案裡面,(  csv  是啥,你百度一下就知道了) 這段程式碼是  IO密集操作  我們採用  aiohttp  模

執行表情包,鬥圖再也難不倒我了

前言 過元旦的這段時間,小編在群裡瘋狂的搶紅包。過程中群裡的表情包滿天飛,於是小編便去瞄了一眼自己收藏的表情包。 那個數目真是少的可憐啊~ 這不是明擺著不把小編放在眼裡麼? 於是小編自己動手自己爬取了各種表情包,鬥圖再也難不倒小編了 哈哈~(豬叫聲) 程式碼