溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在python中使用scrapy框架處理多頁數(shù)據(jù)

發(fā)布時(shí)間:2021-05-06 17:16:14 來源:億速云 閱讀:190 作者:Leah 欄目:編程語言

怎么在python中使用scrapy框架處理多頁數(shù)據(jù)?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

python的五大特點(diǎn)是什么

python的五大特點(diǎn):1.簡單易學(xué),開發(fā)程序時(shí),專注的是解決問題,而不是搞明白語言本身。2.面向?qū)ο?,與其他主要的語言如C++和Java相比, Python以一種非常強(qiáng)大又簡單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?.可移植性,Python程序無需修改就可以在各種平臺上運(yùn)行。4.解釋性,Python語言寫的程序不需要編譯成二進(jìn)制代碼,可以直接從源代碼運(yùn)行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。

方法一:將每一頁對應(yīng)的url存放到爬蟲文件的start_urls

問題:如果頁數(shù)較多時(shí),列表就會變得很大。

方法二:使用Request方法手動發(fā)起請求(推薦使用)

案例:爬取古詩文網(wǎng)每一頁的古詩的標(biāo)題

1、爬取所有頁碼數(shù)據(jù)

import scrapy

class GushiSpider(scrapy.Spider):
    name = 'gushi'
    start_urls = ['https://www.gushiwen.org/']

    pageNum = 2 #pageNum為2,第一頁已經(jīng)爬取過了 
    url = 'https://www.gushiwen.cn/default_%d.aspx' #每頁的url是類似的
    
    def parse(self, response):
        div_list = response.xpath('//div[@class="sons"]/div[1]/p[1]')
        print(str(len(div_list))+"首古詩")
        for div in div_list:
            title = div.xpath('./a/b/text()').extract()
            print(title)
        print("------------------------")

        # 爬取所有頁碼數(shù)據(jù)    
        if self.pageNum <= 10: #一共爬取10頁(共10頁)
            self.pageNum += 1
            url = format(self.url % self.pageNum)   # 每一頁的url和pageNum有關(guān)

2、使用Request方法向頁面手動發(fā)起請求

         # 手動發(fā)起請求: scrapy.Request(url,callback,meta)
            ## url是需要發(fā)起請求的url,
            ## callback參數(shù)的值是回調(diào)函數(shù),即發(fā)起請求后需要調(diào)用哪一個(gè)方法
            ## meta參數(shù)的值是一個(gè) 字典,表示的是向回調(diào)函數(shù)傳遞什么樣的參數(shù)

3、向上面格式化的url發(fā)起請求,callback遞歸調(diào)用parse()方法,將得到的數(shù)據(jù)繼續(xù)進(jìn)行解析

 yield scrapy.Request(url=url,callback=self.parse)

看完上述內(nèi)容,你們掌握怎么在python中使用scrapy框架處理多頁數(shù)據(jù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI