怎么在python中使用scrapy框架處理多頁數(shù)據(jù)?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元雨山做網(wǎng)站,已為上家服務(wù),為雨山各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
python的五大特點:1.簡單易學(xué),開發(fā)程序時,專注的是解決問題,而不是搞明白語言本身。2.面向?qū)ο?,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現(xiàn)面向?qū)ο缶幊獭?.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
方法一:將每一頁對應(yīng)的url存放到爬蟲文件的start_urls
問題:如果頁數(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)用哪一個方法 ## meta參數(shù)的值是一個 字典,表示的是向回調(diào)函數(shù)傳遞什么樣的參數(shù)
3、向上面格式化的url發(fā)起請求,callback遞歸調(diào)用parse()方法,將得到的數(shù)據(jù)繼續(xù)進行解析
yield scrapy.Request(url=url,callback=self.parse)
看完上述內(nèi)容,你們掌握怎么在python中使用scrapy框架處理多頁數(shù)據(jù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
分享標(biāo)題:怎么在python中使用scrapy框架處理多頁數(shù)據(jù)
本文地址:http://jinyejixie.com/article28/ppiojp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、虛擬主機、App開發(fā)、標(biāo)簽優(yōu)化、網(wǎng)站維護、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)