scrapy之千圖網(wǎng)全站爬蟲

好久沒寫爬出了芹啥,這段時間都這折騰別的锻离,今天看了個視頻爬圖片,自己無聊也寫了個千圖網(wǎng)的爬蟲墓怀,結(jié)果寫了好久汽纠,真是生疏,等把web知識補完一定要多寫啊傀履。

好了虱朵,我們先看看網(wǎng)站,看看如何遍歷全站钓账,截圖是我選擇的入口

Paste_Image.png

既然找到了遍歷的入口卧秘,接下來就簡單了。這里講下主要思路官扣,跟之前爬宜搜全站一樣,先爬主頁的所有子欄目的網(wǎng)址羞福,然后根據(jù)每個子欄目的頁數(shù)構(gòu)造出每一個頁面的網(wǎng)址惕蹄,之后就是遍歷全站了,這里貼一下scrapy里面主要spider是代碼

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
from qiantu_spider.items import QiantuSpiderItem



class QiantuSpider(scrapy.Spider):
    name = "qiantu"
    allowed_domains = ["58pic.com"]
    start_urls = ['http://58pic.com/']

    def parse(self, response):
        all_url = response.xpath('//div[@class="moren-content"]/a/@href').extract()

        #print(all_url)
        for i in range(0,int(len(all_url))):
            single_url = all_url[i]
            each_html = single_url + '0/day-1.html'  # 將每個頁面構(gòu)造成第一頁的網(wǎng)址治专,方便提取每頁的最大頁數(shù)
            yield Request(each_html,callback=self.list_page,meta={'front':single_url})#把每個子網(wǎng)站傳到下面的函數(shù)

    def list_page(self,response):
        front_url = response.meta['front']
        try:
            max_page = response.xpath('//*[@id="showpage"]/a[8]/text()').extract()[0]#提取最大頁數(shù)
            print(max_page)
            #print(front_url)
            try:
                for i in range(1,int(max_page)+1):
                    img_page = front_url+'0/day-'+str(i)+'.html'#構(gòu)造出每一個分類的所有url卖陵,接下來就是提取圖片地址了
                    #print(img_page)
                    yield Request(url=img_page,callback=self.get_img_link)
            except:
                print('該網(wǎng)頁沒有數(shù)據(jù)')
        except Exception as  e:
            print('網(wǎng)頁沒有最大頁數(shù),作廢網(wǎng)頁')


    def get_img_link(self,response):
        item =QiantuSpiderItem()
        img_link1 = response.xpath("http://a[@class='thumb-box']/img/@src").extract()
        if img_link1:
        #該網(wǎng)站圖片有點奇葩张峰,有些頁面的圖片存儲方式不一樣泪蔫,總體來說是這兩者,分開寫就好了
            item['img_urls'] =img_link1
            #print(1,img_link1)
            yield item
        else:
            img_link2=response.xpath('//*[@id="main"]/div/div/div/div/div/a/img/@src').extract()
            item['img_urls'] = img_link2
            yield item
            #print(2,img_link2)

下面是piplines代碼喘批,主要是把圖面下載到指定的文件夾撩荣,用了urlretrieve方法

# -*- 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 urllib.request
import re
import os
class QiantuSpiderPipeline(object):
    def process_item(self, item, spider):
        for url in item['img_urls']:
            try:
                real_url = re.sub(r'!(.*)','',url)#把每個圖片地址铣揉!號后面的字符去掉,剩下的是高清圖地址
                name = real_url[-24:].replace('/','')#去除不能表示文件名的符號餐曹,這里將我搞死了

                #print(name)
                file ='E://qiantu/'


                urllib.request.urlretrieve(real_url,filename=file+name)

            except Exception as e:
                print(e,'該圖片沒有高清地址')
        print('成功下載一頁圖片')

千圖網(wǎng)全站的爬取很簡單逛拱,不過記得要在settings里面把robot.txt協(xié)議改掉,最好也偽造一下useragent
如圖是短短幾分鐘的爬取效果

Paste_Image.png

下次要挑個特別有難度的網(wǎng)站爬了才行台猴,github地址:https://github.com/xiaobeibei26

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朽合,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饱狂,更是在濱河造成了極大的恐慌曹步,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凌摄,居然都是意外死亡猖凛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門磺樱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人婆咸,你說我怎么就攤上這事竹捉。” “怎么了尚骄?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵块差,是天一觀的道長。 經(jīng)常有香客問我倔丈,道長憨闰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任需五,我火速辦了婚禮鹉动,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宏邮。我一直安慰自己泽示,他們只是感情好,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布蜜氨。 她就那樣靜靜地躺著械筛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪飒炎。 梳的紋絲不亂的頭發(fā)上埋哟,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音郎汪,去河邊找鬼赤赊。 笑死闯狱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的砍鸠。 我是一名探鬼主播扩氢,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爷辱!你這毒婦竟也來了录豺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤饭弓,失蹤者是張志新(化名)和其女友劉穎双饥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弟断,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡咏花,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阀趴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昏翰。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖刘急,靈堂內(nèi)的尸體忽然破棺而出棚菊,到底是詐尸還是另有隱情,我是刑警寧澤叔汁,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布统求,位于F島的核電站,受9級特大地震影響据块,放射性物質(zhì)發(fā)生泄漏码邻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一另假、第九天 我趴在偏房一處隱蔽的房頂上張望像屋。 院中可真熱鬧,春花似錦边篮、人聲如沸开睡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扶檐,卻和暖如春凶杖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背款筑。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工智蝠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腾么,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓杈湾,卻偏偏與公主長得像解虱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子漆撞,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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