成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

scrapy簡(jiǎn)單學(xué)習(xí)5—圖片下載,爬取妹子圖

JerryZou / 2791人閱讀

摘要:學(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 item
4.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

相關(guān)文章

  • Scrapy 實(shí)戰(zhàn)之爬取妹子

    摘要:很多人學(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...

    Achilles 評(píng)論0 收藏0
  • Python爬蟲 - scrapy - 爬取妹子 Lv2

    摘要:前言這個(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ì)劃,本次要...

    Backache 評(píng)論0 收藏0
  • Python爬蟲 - scrapy - 爬取妹子 Lv1

    摘要:爬取妹子圖的實(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...

    el09xccxy 評(píng)論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • scrapy 實(shí)戰(zhàn)練習(xí)

    摘要:爬取百思不得姐首先一步一步來,我們先從爬最簡(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ù)。 爬取百思不得姐 首先一步一步來,我...

    betacat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<