Python中scrapy的介紹和使用

這篇文章給大家分享的是Python中scrapy的介紹和使用的詳細教程,相信大部分人都還不知道怎么部署,為了讓大家學(xué)會,故而給大家總結(jié)了以下內(nèi)容。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),和靜企業(yè)網(wǎng)站建設(shè),和靜品牌網(wǎng)站建設(shè),網(wǎng)站定制,和靜網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,和靜網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

scrapy的流程

Python中scrapy的介紹和使用

其流程可以描述如下:

● 調(diào)度器把requests-->引擎-->下載中間件--->下載器

● 下載器發(fā)送請求,獲取響應(yīng)---->下載中間件---->引擎--->爬蟲中間件--->爬蟲

● 爬蟲提取url地址,組裝成request對象---->爬蟲中間件--->引擎--->調(diào)度器

● 爬蟲提取數(shù)據(jù)--->引擎--->管道

● 管道進行數(shù)據(jù)的處理和保存

注意:

圖中綠色線條的表示數(shù)據(jù)的傳遞

注意圖中中間件的位置,決定了其作用

注意其中引擎的位置,所有的模塊之前相互獨立,只和引擎進行交互

scrapy中每個模塊的具體作用

Python中scrapy的介紹和使用

1.scrapy項目實現(xiàn)流程

創(chuàng)建一個scrapy項目:scrapy startproject 項目名

生成一個爬蟲:scrapy genspider 爬蟲名 允許爬取的范圍

提取數(shù)據(jù):完善spider,使用xpath等方法

保存數(shù)據(jù):pipeline中保存數(shù)據(jù)

2. 創(chuàng)建scrapy項目

命令:scrapy startproject +<項目名字>

示例:scrapy startproject myspider

生成的目錄和文件結(jié)果如下:

Python中scrapy的介紹和使用

settings.py中的重點字段和內(nèi)涵

● USER_AGENT 設(shè)置ua

● ROBOTSTXT_OBEY 是否遵守robots協(xié)議,默認是遵守

● CONCURRENT_REQUESTS 設(shè)置并發(fā)請求的數(shù)量,默認是16個

● DOWNLOAD_DELAY 下載延遲,默認無延遲

● COOKIES_ENABLED 是否開啟cookie,即每次請求帶上前一次的cookie,默認是開啟的

● DEFAULT_REQUEST_HEADERS 設(shè)置默認請求頭

● SPIDER_MIDDLEWARES 爬蟲中間件,設(shè)置過程和管道相同

● DOWNLOADER_MIDDLEWARES 下載中間件

創(chuàng)建爬蟲

命令:scrapy genspider +<爬蟲名字> + <允許爬取的域名>

生成的目錄和文件結(jié)果如下:

Python中scrapy的介紹和使用

完善spider

完善spider即通過方法進行數(shù)據(jù)的提取等操做:

Python中scrapy的介紹和使用

注意:

● response.xpath方法的返回結(jié)果是一個類似list的類型,其中包含的是selector對象,操作和列表一樣,但是有一些額外的方法

● extract() 返回一個包含有字符串的列表

● extract_first() 返回列表中的第一個字符串,列表為空沒有返回None

● spider中的parse方法必須有

● 需要抓取的url地址必須屬于allowed_domains,但是start_urls中的url地址沒有這個限制

● 啟動爬蟲的時候注意啟動的位置,是在項目路徑下啟動

數(shù)據(jù)傳遞到pipeline

Python中scrapy的介紹和使用

為什么要使用yield?

● 讓整個函數(shù)變成一個生成器,有什么好處呢?

● 遍歷這個函數(shù)的返回值的時候,挨個把數(shù)據(jù)讀到內(nèi)存,不會造成內(nèi)存的瞬間占用過高

● python3中的range和python2中的xrange同理

注意:

yield能夠傳遞的對象只能是:BaseItem,Request,dict,None

6. 完善pipeline

Python中scrapy的介紹和使用

Python中scrapy的介紹和使用

pipeline在settings中能夠開啟多個,為什么需要開啟多個?

● 不同的pipeline可以處理不同爬蟲的數(shù)據(jù)

● 不同的pipeline能夠進行不同的數(shù)據(jù)處理的操作,比如一個進行數(shù)據(jù)清洗,一個進行數(shù)據(jù)的保存

pipeline使用注意點

● 使用之前需要在settings中開啟

● pipeline在setting中鍵表示位置(即pipeline在項目中的位置可以自定義),值表示距離引擎的遠近,越近數(shù)據(jù)會越先經(jīng)過

● 有多個pipeline的時候,process_item的方法必須return item,否則后一個pipeline取到的數(shù)據(jù)為None值

● pipeline中process_item的方法必須有,否則item沒有辦法接受和處理

● process_item方法接受item和spider,其中spider表示當前傳遞item過來的spider

看完上述內(nèi)容,你們對Python中scrapy有進一步的了解嗎?如果還想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。

網(wǎng)站名稱:Python中scrapy的介紹和使用
文章分享:http://muchs.cn/article46/pidchg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、外貿(mào)建站域名注冊、網(wǎng)站設(shè)計、ChatGPT

廣告

聲明:本網(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)

h5響應(yīng)式網(wǎng)站建設(shè)