scrapy 爬取整站圖片

這是一個(gè)練習(xí)項(xiàng)目,這里要感謝簡(jiǎn)書的向右奔跑分蓖,從開始學(xué)習(xí)scrapy開始尔艇,跟向右奔跑老師學(xué)習(xí)了很多,這個(gè)項(xiàng)目也是向右奔跑老師的建議練習(xí)項(xiàng)目之一么鹤。
使用Scrapy ItemLoaders爬取整站圖片

在老師的基礎(chǔ)上自己做了一些修改终娃。本案例沒有用到item,setting也只有增加了USER_AGENT(有些網(wǎng)站反爬蒸甜,模擬瀏覽器)和DOWNLOAD_DELAY(設(shè)置訪問頻率)尝抖,因此直接上spider代碼(直接在代碼中說(shuō)明學(xué)習(xí)過程中遇到的問題和解決方法):

from scrapy.selector import Selector
from scrapy.spiders import CrawlSpider
from scrapy.http import Request
import re                                                #需要用到正則表達(dá)式提取數(shù)字
import urllib.request                              #下載圖片的需要用到這個(gè)模塊毡们,我個(gè)人不會(huì)用pipelines下載

class MeiziSpider(CrawlSpider):
    name = 'meizi'

    #重寫入口
    def start_requests(self):                    #重新寫了入口url,一開始用遞歸寫的昧辽,發(fā)現(xiàn)寫出來(lái)好多重復(fù)訪問(不會(huì)去重)衙熔,效率太低,后來(lái)改成正常的函數(shù)調(diào)用了搅荞,雖然麻煩了點(diǎn)红氯。
        return [Request('http://www.meizitu.com/a/list_1_1.html',callback=self.parse)]

    #訪問分頁(yè)                                           #parse主要是提取分頁(yè)的規(guī)格,獲取分頁(yè)最大的頁(yè)碼咕痛,循環(huán)分頁(yè)訪問分頁(yè)url
    def parse(self,response):
        cel = Selector(response)
        cel2 = cel.xpath('//div[@id="wp_page_numbers"]/ul/li')
        for info in cel2:
            text = info.xpath('a/text()').extract()
            if len(text):
                text = text[0]
                if text == '末頁(yè)':
                    page = info.xpath('a/@href').extract()[0] #xpath獲得的是list痢甘,需要加[0]
                    page = re.findall(r'list_1_(\d+).html',page)[0] #獲得最大的頁(yè)碼,用到re模塊茉贡,findall獲得的是list塞栅,需要加[0]
                    break
        for each in range(int(page)):
            pageurl = 'http://www.meizitu.com/a/list_1_%s.html'% str(each+1)
            print(pageurl)
            yield Request(url=pageurl,callback=self.sceond_parse)


    #訪問第二層頁(yè)面
    def sceond_parse(self,response):
        cel = Selector(response)
        cel1 = cel.xpath('//ul[@class="wp-list clearfix"]/li/div/div/a/@href').extract()
        for info in cel1:                                for循環(huán)分頁(yè)訪問分頁(yè)上縮略圖片的詳細(xì)地址,獲得詳細(xì)圖片的url腔丧,并訪問
            image_url = info
            yield Request(url=image_url,callback=self.image_urlparse)

    #保存圖片
    def image_urlparse(self,response):
        cel = Selector(response)
        name = cel.xpath('//div[@id="picture"]/p/img/@alt').extract()
        pic = cel.xpath('//div[@id="picture"]/p/img/@src').extract()
        for i in range(len(name)):
            print(name[i],pic[i])             #測(cè)試用
            #以下代碼是模擬瀏覽器放椰,urllib模塊的headers需要單獨(dú)增加,settings中的headers對(duì)urllib無(wú)效愉粤。
            opener=urllib.request.build_opener()
            opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36')]
            urllib.request.install_opener(opener)

            #以下代碼保存圖片砾医。
            try:
                urllib.request.urlretrieve(pic[i],r'C:\Users\ABC\Desktop\meizi\pic\%s.jpg'% name[i])   #下載到后面的page時(shí)發(fā)現(xiàn)每張圖片的名字一樣,導(dǎo)致后面的圖片會(huì)把之前的圖片覆蓋衣厘,name還需要重新修改如蚜,以后有時(shí)間在修改。
            except:
                print('--no---image--')

效果:

Paste_Image.png

存在的問題:

1.重復(fù)命名:后面分頁(yè)圖片地址對(duì)應(yīng)的name一樣影暴,導(dǎo)致會(huì)少掉很多圖片错邦,后續(xù)要重寫命名規(guī)則。
![`4KW)BQFAQ3Q62(NM47T]6P.png](http://upload-images.jianshu.io/upload_images/4568344-ba5463e22a3f702e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.還不會(huì)使用pipelines下載型宙。

3.此站不需要登陸兴猩,沒有涉及到模擬登陸的內(nèi)容,后續(xù)需要繼續(xù)學(xué)習(xí)的內(nèi)容早歇。

4.解析網(wǎng)站花了好多時(shí)間,對(duì)網(wǎng)站結(jié)構(gòu)不是很清楚讨勤,xpath也不是很熟悉箭跳,使用的時(shí)候經(jīng)常出現(xiàn)問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末潭千,一起剝皮案震驚了整個(gè)濱河市谱姓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刨晴,老刑警劉巖屉来,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件路翻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡茄靠,警方通過查閱死者的電腦和手機(jī)茂契,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)慨绳,“玉大人掉冶,你說(shuō)我怎么就攤上這事∑暄” “怎么了厌小?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)战秋。 經(jīng)常有香客問我璧亚,道長(zhǎng),這世上最難降的妖魔是什么脂信? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任癣蟋,我火速辦了婚禮,結(jié)果婚禮上吉嚣,老公的妹妹穿的比我還像新娘梢薪。我一直安慰自己,他們只是感情好尝哆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布秉撇。 她就那樣靜靜地躺著,像睡著了一般秋泄。 火紅的嫁衣襯著肌膚如雪琐馆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天恒序,我揣著相機(jī)與錄音瘦麸,去河邊找鬼。 笑死歧胁,一個(gè)胖子當(dāng)著我的面吹牛滋饲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喊巍,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屠缭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了崭参?” 一聲冷哼從身側(cè)響起呵曹,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奄喂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铐殃,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年跨新,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了富腊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡玻蝌,死狀恐怖蟹肘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俯树,我是刑警寧澤帘腹,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站许饿,受9級(jí)特大地震影響阳欲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陋率,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一球化、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓦糟,春花似錦筒愚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至劲蜻,卻和暖如春陆淀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背先嬉。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工轧苫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疫蔓。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓含懊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衅胀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岔乔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,152評(píng)論 25 707
  • 這兩天摸索了下scrapy,剛看文檔的時(shí)候覺得有點(diǎn)生無(wú)可戀拗小,scrapy框架個(gè)人還是覺得比較難懂的,需要學(xué)習(xí)的地方...
    Treehl閱讀 5,635評(píng)論 7 10
  • 序言第1章 Scrapy介紹第2章 理解HTML和XPath第3章 爬蟲基礎(chǔ) 第4章 從Scrapy到移動(dòng)應(yīng)用第5...
    SeanCheney閱讀 5,435評(píng)論 0 7
  • 從呱呱墜地的那一天起剿配,我們就凝望著這個(gè)世界,討要東西阅束。我們不止討要到了生存所必須的食物呼胚、衣物,也用了十幾年的...
    落日丹楓閱讀 453評(píng)論 2 1
  • 經(jīng)常在用息裸,卻經(jīng)常想不起名字蝇更。認(rèn)真總結(jié)一份,常用的數(shù)組相關(guān)方法~本文基于Mars老師的Java4Android視頻呼盆,...
    Sia_Coding閱讀 1,401評(píng)論 1 5