摘要:學(xué)習(xí)網(wǎng)站爬蟲,整站爬取妹子圖定義爬取的內(nèi)容的編寫提供了一種便捷的方式填充抓取到的是頁(yè)面源代碼,載入每個(gè)連接,用屬性請(qǐng)求連接,返回請(qǐng)求獲取頁(yè)碼集合打印頁(yè)碼如果頁(yè)碼集合圖片連接讀取頁(yè)碼集合的倒數(shù)第二個(gè)頁(yè)碼圖片連接替換成空返回請(qǐng)求用載
學(xué)習(xí)網(wǎng)站:爬蟲,整站爬取妹子圖
1.item.py(定義爬取的內(nèi)容)import scrapy class MeizituItem(scrapy.Item): url = scrapy.Field() name = scrapy.Field() tags = scrapy.Field() image_urls = scrapy.Field() images = scrapy.Field()2.spider的編寫
# -*- coding: utf-8 -*- import scrapy from scrapy.selector import Selector #Item Loaders提供了一種便捷的方式填充抓取到的 :Items from scrapy.contrib.loader import ItemLoader, Identity from meizitu.items import MeizituItem class MeiziSpider(scrapy.Spider): name = "meizi" allowed_domains = ["meizitu.com"] start_urls = ( "http://www.meizitu.com/", ) def parse(self, response): #sel是頁(yè)面源代碼,載入scrapy.selector sel = Selector(response) #每個(gè)連接,用@href屬性 for link in sel.xpath("http://h2/a/@href").extract(): #請(qǐng)求=Request(連接,parese_item) request = scrapy.Request(link, callback=self.parse_item) yield request#返回請(qǐng)求 #獲取頁(yè)碼集合 pages = sel.xpath("http://*[@id="wp_page_numbers"]/ul/li/a/@href").extract() print("pages: %s" % pages)#打印頁(yè)碼 if len(pages) > 2:#如果頁(yè)碼集合>2 page_link = pages[-2]#圖片連接=讀取頁(yè)碼集合的倒數(shù)第二個(gè)頁(yè)碼 page_link = page_link.replace("/a/", "")#圖片連接=page_link(a替換成空) request = scrapy.Request("http://www.meizitu.com/a/%s" % page_link, callback=self.parse) yield request#返回請(qǐng)求 def parse_item(self, response): #l=用ItemLoader載入MeizituItem() l = ItemLoader(item=MeizituItem(), response=response) #名字 l.add_xpath("name", "http://h2/a/text()") #標(biāo)簽 l.add_xpath("tags", "http://div[@id="maincontent"]/div[@class="postmeta clearfix"]/div[@class="metaRight"]/p") #圖片連接 l.add_xpath("image_urls", "http://div[@id="picture"]/p/img/@src", Identity()) #url l.add_value("url", response.url) return l.load_item()3.pipeline的編寫(下載圖片,新增圖片)
# -*- coding: utf-8 -*- # Define your item pipelines here #圖片下載部分(自動(dòng)增量) # Don"t forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html import requests from meizitu import settings import os #圖片下載類 class ImageDownloadPipeline(object): def process_item(self, item, spider): if "image_urls" in item:#如何‘圖片地址’在項(xiàng)目中 images = []#定義圖片空集 dir_path = "%s/%s" % (settings.IMAGES_STORE, spider.name) if not os.path.exists(dir_path): os.makedirs(dir_path) for image_url in item["image_urls"]: us = image_url.split("/")[3:] image_file_name = "_".join(us) file_path = "%s/%s" % (dir_path, image_file_name) images.append(file_path) if os.path.exists(file_path): continue with open(file_path, "wb") as handle: response = requests.get(image_url, stream=True) for block in response.iter_content(1024): if not block: break handle.write(block) item["images"] = images return item4.settings
BOT_NAME = "meizitu" SPIDER_MODULES = ["meizitu.spiders"] NEWSPIDER_MODULE = "meizitu.spiders" #載入ImageDownLoadPipeline類 ITEM_PIPELINES = {"meizitu.pipelines.ImageDownloadPipeline": 1} #圖片儲(chǔ)存 IMAGES_STORE = "."結(jié)果
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44162.html
摘要:很多人學(xué)習(xí)爬蟲的第一驅(qū)動(dòng)力就是爬取各大網(wǎng)站的妹子圖片,比如比較有名的。最后我們只需要運(yùn)行程序,即可執(zhí)行爬取,程序運(yùn)行命名如下完整代碼我已上傳到微信公眾號(hào)后臺(tái),在癡海公眾號(hào)后臺(tái)回復(fù)即可獲取。本文首發(fā)于公眾號(hào)癡海,后臺(tái)回復(fù)即可獲取最新編程資源。 showImg(https://segmentfault.com/img/remote/1460000016780800); 閱讀文本大概需要 1...
摘要:前言這個(gè)文章是延續(xù)之前爬取妹子圖的延續(xù),之前的爬蟲可以爬取一個(gè)頁(yè)面的圖片,爬取一次大概張圖片的樣子,按照之前的計(jì)劃,本次要進(jìn)一步完善爬蟲,爬取妹子圖全網(wǎng)圖片。做完上述改動(dòng)后,爬蟲運(yùn)行基本正常,但是爬取的速度有點(diǎn)慢,個(gè)小時(shí)大概爬取了張圖片。 0. 前言 這個(gè)文章是延續(xù)之前《爬取妹子圖 Lv1》的延續(xù),之前的爬蟲可以爬取一個(gè)頁(yè)面的圖片,爬取一次大概400張圖片的樣子,按照之前的計(jì)劃,本次要...
摘要:爬取妹子圖的實(shí)例打算分成三部分來寫,嘗試完善實(shí)用性。中的每一個(gè)子項(xiàng)都是一個(gè)標(biāo)簽。這個(gè)說明的前提是不自定義當(dāng)爬蟲完成的模型數(shù)據(jù)采集后,會(huì)自動(dòng)將發(fā)送給處理。 0. 前言 這是一個(gè)利用python scrapy框架爬取網(wǎng)站圖片的實(shí)例,本人也是在學(xué)習(xí)當(dāng)中,在這做個(gè)記錄,也希望能幫到需要的人。爬取妹子圖的實(shí)例打算分成三部分來寫,嘗試完善實(shí)用性。 系統(tǒng)環(huán)境 System Version:Ubunt...
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:爬取百思不得姐首先一步一步來,我們先從爬最簡(jiǎn)單的文本開始。將百思不得姐段子保存到中別忘了將管道加到配置文件中。雖然我只是簡(jiǎn)單的爬了百思不得姐,不過這些方法可以應(yīng)用到其他方面,爬取更多更有用的數(shù)據(jù)。 前一篇文章介紹了很多關(guān)于scrapy的進(jìn)階知識(shí),不過說歸說,只有在實(shí)際應(yīng)用中才能真正用到這些知識(shí)。所以這篇文章就來嘗試?yán)胹crapy爬取各種網(wǎng)站的數(shù)據(jù)。 爬取百思不得姐 首先一步一步來,我...
閱讀 1240·2021-11-25 09:43
閱讀 1349·2021-09-26 09:55
閱讀 2410·2021-09-10 11:20
閱讀 3378·2019-08-30 15:55
閱讀 1454·2019-08-29 13:58
閱讀 1180·2019-08-29 12:36
閱讀 2353·2019-08-29 11:18
閱讀 3418·2019-08-26 11:47