摘要:學習網站爬蟲,整站爬取妹子圖定義爬取的內容的編寫提供了一種便捷的方式填充抓取到的是頁面源代碼,載入每個連接,用屬性請求連接,返回請求獲取頁碼集合打印頁碼如果頁碼集合圖片連接讀取頁碼集合的倒數第二個頁碼圖片連接替換成空返回請求用載
學習網站:爬蟲,整站爬取妹子圖
1.item.py(定義爬取的內容)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是頁面源代碼,載入scrapy.selector sel = Selector(response) #每個連接,用@href屬性 for link in sel.xpath("http://h2/a/@href").extract(): #請求=Request(連接,parese_item) request = scrapy.Request(link, callback=self.parse_item) yield request#返回請求 #獲取頁碼集合 pages = sel.xpath("http://*[@id="wp_page_numbers"]/ul/li/a/@href").extract() print("pages: %s" % pages)#打印頁碼 if len(pages) > 2:#如果頁碼集合>2 page_link = pages[-2]#圖片連接=讀取頁碼集合的倒數第二個頁碼 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#返回請求 def parse_item(self, response): #l=用ItemLoader載入MeizituItem() l = ItemLoader(item=MeizituItem(), response=response) #名字 l.add_xpath("name", "http://h2/a/text()") #標簽 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 #圖片下載部分(自動增量) # 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:#如何‘圖片地址’在項目中 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} #圖片儲存 IMAGES_STORE = "."結果
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44162.html
摘要:很多人學習爬蟲的第一驅動力就是爬取各大網站的妹子圖片,比如比較有名的。最后我們只需要運行程序,即可執行爬取,程序運行命名如下完整代碼我已上傳到微信公眾號后臺,在癡海公眾號后臺回復即可獲取。本文首發于公眾號癡海,后臺回復即可獲取最新編程資源。 showImg(https://segmentfault.com/img/remote/1460000016780800); 閱讀文本大概需要 1...
摘要:前言這個文章是延續之前爬取妹子圖的延續,之前的爬蟲可以爬取一個頁面的圖片,爬取一次大概張圖片的樣子,按照之前的計劃,本次要進一步完善爬蟲,爬取妹子圖全網圖片。做完上述改動后,爬蟲運行基本正常,但是爬取的速度有點慢,個小時大概爬取了張圖片。 0. 前言 這個文章是延續之前《爬取妹子圖 Lv1》的延續,之前的爬蟲可以爬取一個頁面的圖片,爬取一次大概400張圖片的樣子,按照之前的計劃,本次要...
摘要:爬取妹子圖的實例打算分成三部分來寫,嘗試完善實用性。中的每一個子項都是一個標簽。這個說明的前提是不自定義當爬蟲完成的模型數據采集后,會自動將發送給處理。 0. 前言 這是一個利用python scrapy框架爬取網站圖片的實例,本人也是在學習當中,在這做個記錄,也希望能幫到需要的人。爬取妹子圖的實例打算分成三部分來寫,嘗試完善實用性。 系統環境 System Version:Ubunt...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:爬取百思不得姐首先一步一步來,我們先從爬最簡單的文本開始。將百思不得姐段子保存到中別忘了將管道加到配置文件中。雖然我只是簡單的爬了百思不得姐,不過這些方法可以應用到其他方面,爬取更多更有用的數據。 前一篇文章介紹了很多關于scrapy的進階知識,不過說歸說,只有在實際應用中才能真正用到這些知識。所以這篇文章就來嘗試利用scrapy爬取各種網站的數據。 爬取百思不得姐 首先一步一步來,我...
閱讀 1231·2021-11-25 09:43
閱讀 1342·2021-09-26 09:55
閱讀 2340·2021-09-10 11:20
閱讀 3370·2019-08-30 15:55
閱讀 1448·2019-08-29 13:58
閱讀 1172·2019-08-29 12:36
閱讀 2348·2019-08-29 11:18
閱讀 3413·2019-08-26 11:47