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

資訊專欄INFORMATION COLUMN

Python爬蟲(chóng) - scrapy - 爬取妹子圖 Lv2

Backache / 1694人閱讀

摘要:前言這個(gè)文章是延續(xù)之前爬取妹子圖的延續(xù),之前的爬蟲(chóng)可以爬取一個(gè)頁(yè)面的圖片,爬取一次大概張圖片的樣子,按照之前的計(jì)劃,本次要進(jìn)一步完善爬蟲(chóng),爬取妹子圖全網(wǎng)圖片。做完上述改動(dòng)后,爬蟲(chóng)運(yùn)行基本正常,但是爬取的速度有點(diǎn)慢,個(gè)小時(shí)大概爬取了張圖片。

0. 前言

這個(gè)文章是延續(xù)之前《爬取妹子圖 Lv1》的延續(xù),之前的爬蟲(chóng)可以爬取一個(gè)頁(yè)面的圖片,爬取一次大概400張圖片的樣子,按照之前的計(jì)劃,本次要進(jìn)一步完善爬蟲(chóng),爬取妹子圖全網(wǎng)圖片。由于之前已經(jīng)有了爬蟲(chóng)的雛形,所以本篇文章僅對(duì)增改內(nèi)容進(jìn)行說(shuō)明。

系統(tǒng)環(huán)境

System Version:Ubuntu 16.04
Python Version:3.5.2
Scrapy Version:1.5.0

1. 爬蟲(chóng)文件 1.1. 完整文件
from scrapy import Request
from scrapy.spiders import Spider
from spider_meizitu.items import SpiderMeizituItem
import re

class MeizituSpider(Spider):
    name = "meizitu"
    
    start_urls = {
        "http://www.meizitu.com/a/more_1.html",
    }

    def parse(self, response):
        meizi_pic_lists = response.xpath("http://ul[@class="wp-list clearfix"]/li")
        for i, meizi_item in enumerate(meizi_pic_lists):
            meizi_item_url = meizi_item.xpath(".//h3[@class="tit"]/a/@href").extract()[0]
            print("===== 當(dāng)前爬取頁(yè)面共有圖片%s組,正在抓取第%s組圖片,頁(yè)面鏈接:: %s ====="% (len(meizi_pic_lists),i+1,meizi_item_url))
            yield Request(meizi_item_url,callback=self.parse_meizi_pic)

        next_url = re.findall("下一頁(yè)",response.xpath("http://*[@id="wp_page_numbers"]").extract()[0])
        print("next_url:::::",next_url)
        #print("response:::::",response.xpath("http://*[@id="wp_page_numbers"]").extract()[0])

        if next_url:
            next_url = "http://www.meizitu.com/a/" + next_url[0]
            print("========== Request Next Url :: %s ==========" % next_url )
            yield Request(next_url,callback=self.parse)
        

    def parse_meizi_pic(self,response):
        print("========== parse_meizi_pic response::: %s =========="% response)
        item = SpiderMeizituItem()
        meizitu_pics = response.xpath("http://div[@id="picture"]/p/img")
        
        for i, meizitu_pic in enumerate(meizitu_pics):
            item["images"] = meizitu_pic.xpath(".//@alt").extract()[0].split(",")[0]
            item["image_urls"] = meizitu_pic.xpath(".//@src").extract()
            print("===== 當(dāng)前頁(yè)面共有圖片%s張,正在抓取第%s張圖片,圖片鏈接:: %s ====="% (len(meizitu_pics),i+1,item["image_urls"]))
            yield item
1.2. 增改項(xiàng)目說(shuō)明 1.2.1. import re

為了定位下一頁(yè)的跳轉(zhuǎn)鏈接,所以加入了正則表達(dá)式。

1.2.2. next_url
next_url = re.findall("下一頁(yè)",response.xpath("http://*[@id="wp_page_numbers"]").extract()[0])

利用正則表達(dá)式來(lái)提取下一頁(yè)的鏈接地址,re.findall的第一個(gè)參數(shù)是正則表達(dá)式,第二個(gè)參數(shù)是要匹配的字符串。利用response.xpath將頁(yè)面中分頁(yè)菜單部分的html代碼提取出來(lái)用于正則匹配,返回的結(jié)果就是下一頁(yè)按鈕中的超鏈接。如果當(dāng)前頁(yè)面是http://www.meizitu.com/a/more_1.html,得到的url就是more_2.html

接下來(lái)就將得到的next_url 與主鏈接合并成完整鏈接,輸出給parse函數(shù)繼續(xù)處理。

2. settings

做完之前的改動(dòng)后,我開(kāi)始爬取頁(yè)面圖片,爬取more_1.html頁(yè)面之后可以正常跳轉(zhuǎn)到more_2.html,之后到more_3.htmlmore_4.html。但是出現(xiàn)一個(gè)問(wèn)題就是在爬取到后期的時(shí)候,每個(gè)頁(yè)面的39個(gè)項(xiàng)目中只能爬取到最后一個(gè),有時(shí)候一個(gè)也爬不到,最終爬蟲(chóng)運(yùn)行完畢后,我只得到了900+的圖片。由于本人基礎(chǔ)知識(shí)還不夠扎實(shí),只是有兩方面懷疑,一是網(wǎng)站對(duì)請(qǐng)求做了限制,規(guī)定時(shí)間內(nèi)如果請(qǐng)求過(guò)多則爬不到頁(yè)面,二是scrapy的download隊(duì)列有數(shù)量限制,爬取到大概50個(gè)頁(yè)面的時(shí)候,好像隊(duì)列就滿了,無(wú)法再新增項(xiàng)目,只有前面的隊(duì)列完成后,才能有新的項(xiàng)目進(jìn)入隊(duì)列。不論是哪個(gè)原因,我對(duì)setting做了些修改,打開(kāi)或者增加了一些setting設(shè)置,具體如下:

配置Scrapy執(zhí)行的最大并發(fā)請(qǐng)求 默認(rèn)16
CONCURRENT_REQUESTS = 128
設(shè)置下載延遲 默認(rèn) 0
DOWNLOAD_DELAY = 5
禁用cookies
COOKIES_ENABLED = False
日志輸出基本,默認(rèn): "DEBUG",log的最低級(jí)別??蛇x的級(jí)別有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。
LOG_LEVEL = "INFO"

做完上述改動(dòng)后,爬蟲(chóng)運(yùn)行基本正常,但是爬取的速度有點(diǎn)慢,12個(gè)小時(shí)大概爬取了9000張圖片。

3. 后續(xù)

有心的朋友能夠看到,在這兩個(gè)爬蟲(chóng)實(shí)例中,我始終沒(méi)有去寫(xiě)pipeline,一直使用scrapy自帶的pipeline模塊。但是默認(rèn)的pipeline模塊下載的圖片名稱不可讀,下一步,我將重寫(xiě)pipeline組件,實(shí)現(xiàn)文件命名和分目錄存儲(chǔ)的功能。

最后,發(fā)一個(gè)我自己理解的這個(gè)爬蟲(chóng)的運(yùn)行流程圖,由于scrapy框架比較大,高端應(yīng)用(如調(diào)度器、規(guī)則等)還沒(méi)有用到,也沒(méi)在這個(gè)圖里體現(xiàn)出來(lái),僅供新手學(xué)習(xí)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41425.html

相關(guān)文章

  • Python爬蟲(chóng) - scrapy - 爬取妹子 Lv1

    摘要:爬取妹子圖的實(shí)例打算分成三部分來(lái)寫(xiě),嘗試完善實(shí)用性。中的每一個(gè)子項(xiàng)都是一個(gè)標(biāo)簽。這個(gè)說(shuō)明的前提是不自定義當(dāng)爬蟲(chóng)完成的模型數(shù)據(jù)采集后,會(huì)自動(dòng)將發(fā)送給處理。 0. 前言 這是一個(gè)利用python scrapy框架爬取網(wǎng)站圖片的實(shí)例,本人也是在學(xué)習(xí)當(dāng)中,在這做個(gè)記錄,也希望能幫到需要的人。爬取妹子圖的實(shí)例打算分成三部分來(lái)寫(xiě),嘗試完善實(shí)用性。 系統(tǒng)環(huán)境 System Version:Ubunt...

    el09xccxy 評(píng)論0 收藏0
  • Scrapy 實(shí)戰(zhàn)之爬取妹子

    摘要:很多人學(xué)習(xí)爬蟲(chóng)的第一驅(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
  • 首次公開(kāi),整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

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

    Harriet666 評(píng)論0 收藏0
  • scrapy簡(jiǎn)單學(xué)習(xí)5—片下載,爬取妹子

    摘要:學(xué)習(xí)網(wǎng)站爬蟲(chóng),整站爬取妹子圖定義爬取的內(nèi)容的編寫(xiě)提供了一種便捷的方式填充抓取到的是頁(yè)面源代碼,載入每個(gè)連接,用屬性請(qǐng)求連接,返回請(qǐng)求獲取頁(yè)碼集合打印頁(yè)碼如果頁(yè)碼集合圖片連接讀取頁(yè)碼集合的倒數(shù)第二個(gè)頁(yè)碼圖片連接替換成空返回請(qǐng)求用載 學(xué)習(xí)網(wǎng)站:爬蟲(chóng),整站爬取妹子圖 1.item.py(定義爬取的內(nèi)容) import scrapy class MeizituItem(scrapy.Ite...

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

    摘要:爬取百思不得姐首先一步一步來(lái),我們先從爬最簡(jiǎn)單的文本開(kāi)始。將百思不得姐段子保存到中別忘了將管道加到配置文件中。雖然我只是簡(jiǎn)單的爬了百思不得姐,不過(guò)這些方法可以應(yīng)用到其他方面,爬取更多更有用的數(shù)據(jù)。 前一篇文章介紹了很多關(guān)于scrapy的進(jìn)階知識(shí),不過(guò)說(shuō)歸說(shuō),只有在實(shí)際應(yīng)用中才能真正用到這些知識(shí)。所以這篇文章就來(lái)嘗試?yán)胹crapy爬取各種網(wǎng)站的數(shù)據(jù)。 爬取百思不得姐 首先一步一步來(lái),我...

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

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

0條評(píng)論

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