黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Scrapy框架使用之Spider+Item+Pipline的簡單使用

Scrapy框架使用之Spider+Item+Pipline的簡單使用

來源:千鋒教育
發(fā)布人:qyf
時間: 2022-09-19 17:53:35 1663581215

  在 Scrapy 中要抓取和解析一些邏輯內(nèi)容和提取網(wǎng)站的鏈接,其實都是需要在 Spider 中完成的。在上一篇文章中我們介紹了Scarpy框架的簡單使用,后面一些文章我們要陸續(xù)介紹框架里面的Spider、配置、管道、中間件等。scrapy 框架分為spider爬蟲和CrawlSpider(規(guī)則爬蟲),本篇文章主要介紹Spider爬蟲的使用。

  spider

  在實現(xiàn) Scrapy 爬蟲項目時,最核心的類就是 Spider 類了,它定義了如何爬取某個網(wǎng)站的流程和解析方式。簡單來講,Spider 要做的事就是如下兩件。

  • 定義爬取網(wǎng)站的動作

  • 分析爬取下來的網(wǎng)頁

  對于 Spider 類來說,整個爬取循環(huán)如下所述。

  • 以初始的 URL 初始化 Request,并設(shè)置回調(diào)函數(shù)。 當(dāng)該 Request 成功請求并返回時,將生成 Response,并作為參數(shù)傳給該回調(diào)函數(shù)。

  • 在回調(diào)函數(shù)內(nèi)分析返回的網(wǎng)頁內(nèi)容。返回結(jié)果可以有兩種形式,一種是解析到的有效結(jié)果返回字典或 Item 對象。下一步可經(jīng)過處理后(或直接)保存,另一種是解析得下一個(如下一頁)鏈接,可以利用此鏈接構(gòu)造 Request 并設(shè)置新的回調(diào)函數(shù),返回 Request。

  • 如果返回的是字典或 Item 對象,可通過 Feed Exports 等形式存入到文件,如果設(shè)置了 Pipeline 的話,可以經(jīng)由 Pipeline 處理(如過濾、修正等)并保存。

  • 如果返回的是 Reqeust,那么 Request 執(zhí)行成功得到 Response 之后會再次傳遞給 Request 中定義的回調(diào)函數(shù),可以再次使用選擇器來分析新得到的網(wǎng)頁內(nèi)容,并根據(jù)分析的數(shù)據(jù)生成 Item。

  通過以上幾步循環(huán)往復(fù)進行,便完成了站點的爬取。

  我們以星巴克網(wǎng)站為例,為大家介紹Spider類,首先創(chuàng)建項目和創(chuàng)建爬蟲,具體步驟如下:

  scrapy startproject starbuckspro

  進入starbuckspro中,執(zhí)行scrapy genspider starbucks https://www.starbucks.com.cn

  此時我們就可以看到,有爬蟲文件產(chǎn)生如圖:

Picture

  此時大家看到類:StarbucksSpider繼承自scrapy.Spider,這個類是最簡單最基本的 Spider 類,任何其他的 Spider 必須繼承這個類,包括后文要說明的一些特殊 Spider 類也都是繼承自它。這個類里提供了 startrequests () 方法的默認(rèn)實現(xiàn),讀取并請求 starturls 屬性,并根據(jù)返回的結(jié)果調(diào)用 parse () 方法解析結(jié)果。另外它還有一些基礎(chǔ)屬性,下面對其進行講解:

  name: 爬蟲名稱,是定義 Spider 名字的字符串。Spider 的名字定義了 Scrapy 如何定位并初始化 Spider,所以其必須是唯一的。如果該 Spider 爬取單個網(wǎng)站,一個常見的做法是以該網(wǎng)站的域名名稱來命名 Spider。

  allowed_domains:允許爬取的域名,是可選配置,不在此范圍的鏈接不會被跟進爬取。

  start_urls:起始 URL 列表,當(dāng)我們沒有實現(xiàn) start_requests () 方法時,默認(rèn)會從這個列表開始抓取。

  當(dāng)然還有custom_settings和settings,可以進行一些設(shè)置或者獲取一些全局的設(shè)置。而crawler屬性是由 from_crawler () 方法設(shè)置的,代表的是本 Spider 類對應(yīng)的 Crawler 對象。

  除了一些基礎(chǔ)屬性,Spider 還有一些常用的方法:

  start_requests ():此方法用于生成初始請求,它必須返回一個可迭代對象,此方法會默認(rèn)使用 start_urls 里面的 URL 來構(gòu)造 Request,而且 Request 是 GET 請求方式。如果我們想在啟動時以 POST 方式訪問某個站點,可以直接重寫這個方法,發(fā)送 POST 請求時我們使用 FormRequest 即可。

  parse ():當(dāng) Response 沒有指定回調(diào)函數(shù)時,該方法會默認(rèn)被調(diào)用,它負責(zé)處理 Response,處理返回結(jié)果,并從中提取出想要的數(shù)據(jù)和下一步的請求,然后返回。該方法需要返回一個包含 Request 或 Item 的可迭代對象。

  closed ():當(dāng) Spider 關(guān)閉時,該方法會被調(diào)用,在這里一般會定義釋放資源的一些操作或其他收尾操作。

  當(dāng)前星巴克的菜單頁面如上圖,我們要爬取里面的所有菜單名稱和圖片。parse()方法在 Response 沒有指定回調(diào)函數(shù)時,會默認(rèn)被調(diào)用。所以里面的參數(shù)response就是我們獲取的頁面結(jié)果,我們要從頁面中提取想要的菜單名稱和圖片鏈接地址進行保存。于是我們要重寫parse()方法和定義Item.py文件

  Item

  在抓取數(shù)據(jù)的過程中,主要要做的事就是從雜亂的數(shù)據(jù)中提取出結(jié)構(gòu)化的數(shù)據(jù)。Scrapy的Spider可以把數(shù)據(jù)提取為一個Python中的字典,雖然字典使用起來非常方便,對我們來說也很熟悉,但是字典有一個缺點:缺少固定結(jié)構(gòu)。在一個擁有許多爬蟲的大項目中,字典非常容易造成字段名稱上的語法錯誤,或者是返回不一致的數(shù)據(jù)。

  所以Scrapy中,定義了一個專門的通用數(shù)據(jù)結(jié)構(gòu):Item。這個Item對象提供了跟字典相似的API,并且有一個非常方便的語法來聲明可用的字段。

  我們的Item的代碼內(nèi)容如下(因為只需要保存名稱和圖片鏈接即可):

Picture(1)

  構(gòu)建items.py文件完成后,還需要進一步處理爬取的數(shù)據(jù),這就需要修改該項目中的pipelines.py文件。

  Pipeline

  Item Pipeline 是項目管道。也是保存結(jié)構(gòu)數(shù)據(jù)的地。它的調(diào)用發(fā)生在 Spider 產(chǎn)生 Item 之后。當(dāng) Spider 解析完 Response 之后,Item 就會傳遞到 Item Pipeline,被定義的 Item Pipeline 組件會順次調(diào)用,完成一連串的處理過程,比如數(shù)據(jù)清洗、存儲等。 它的主要功能有:

  • 清洗 HTML 數(shù)據(jù)

  • 驗證爬取數(shù)據(jù),檢查爬取字段

  • 查重并丟棄重復(fù)內(nèi)容

  • 將爬取結(jié)果儲存到數(shù)據(jù)庫

  定義Item非常簡單,只需要繼承scrapy.Item類,并將所有字段都定義為scrapy.Field類型即可。Field對象可用來對每個字段指定元數(shù)據(jù)。

  其中經(jīng)常使用的方法就是processitem () ,被定義的 Item Pipeline 會默認(rèn)調(diào)用這個方法對 Item 進行處理。比如,我們可以進行數(shù)據(jù)處理或者將數(shù)據(jù)寫入到數(shù)據(jù)庫等操作。它必須返回 Item 類型的值或者拋出一個 DropItem 異常。 processitem () 方法的參數(shù)有如下兩個。

  • item,是 Item 對象,即被處理的 Item

  • spider,是 Spider 對象,即生成該 Item 的 Spider

  所以我們的Pipeline代碼如下(將數(shù)據(jù)存儲到數(shù)據(jù)庫中):

Picture(2)

  注意在settings.py中設(shè)置當(dāng)前的Pipeline。

Picture(3)

  為了避免被發(fā)現(xiàn)爬蟲我們還可以在settings.py中,如下設(shè)置:

Picture(4)

Picture(5)

  準(zhǔn)備活動完成后,我們開始編寫我們的爬蟲文件,爬取頁面的分析如下圖

Picture(6)

Picture(7)

  執(zhí)行爬蟲通過命令:scrapy crawl starbucks,則最后的下載數(shù)據(jù)結(jié)果如下:

Picture(8)

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
快速通道
日韩中文字幕在线播放| 国产成人精品综合| 99久久精品国产麻豆| 国产不卡在线播放| 韩国三级香港三级日本三级la| 国产一区二区精品| 免费毛片播放| 精品在线视频播放| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 免费国产一级特黄aa大片在线| a级黄色毛片免费播放视频| 香蕉视频久久| 国产网站免费观看| 国产成人精品综合在线| 九九久久99| 国产不卡在线观看| 精品久久久久久中文字幕2017| 国产成人啪精品| 一级片免费在线观看视频| 欧美另类videosbestsex久久| 日本免费看视频| 国产一区精品| 亚洲精品影院一区二区| 91麻豆精品国产自产在线观看一区 | 中文字幕Aⅴ资源网| 欧美激情一区二区三区在线| 国产网站免费在线观看| 色综合久久天天综合观看| 高清一级片| 国产成人精品综合| 国产精品123| 国产一区二区精品在线观看| 国产欧美精品| 青草国产在线观看| 天天做人人爱夜夜爽2020毛片| 99久久精品费精品国产一区二区| 午夜欧美成人香蕉剧场| 日韩免费在线观看视频| 精品视频免费在线| 免费一级片网站| 国产一区二区精品| 国产伦理精品| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 四虎影视久久久| 亚洲wwwwww| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲天堂在线播放| 午夜欧美福利| 日本伦理网站| 免费国产在线观看| 免费毛片播放| 国产精品免费久久| 久草免费在线观看| 国产成人精品综合| 精品在线视频播放| 国产视频久久久久| 欧美一级视频免费| 国产伦久视频免费观看 视频| 午夜精品国产自在现线拍| 国产麻豆精品| 国产成人精品影视| 日日爽天天| 精品国产香蕉在线播出| 国产麻豆精品免费密入口| 国产91视频网| 九九热国产视频| 精品久久久久久中文字幕2017| 久久久久久久男人的天堂| 精品视频一区二区三区免费| 91麻豆国产| 九九九国产| 日韩在线观看免费完整版视频| 亚洲精品影院一区二区| 日本特黄特色aa大片免费| 亚洲精品永久一区| 免费的黄色小视频| 99久久精品国产免费| 国产一区二区精品久久91| 午夜在线观看视频免费 成人| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久久成人网| 精品久久久久久中文字幕2017| 久久久成人网| 亚洲 欧美 成人日韩| 国产成人精品综合| 精品久久久久久中文字幕2017| 日韩一级黄色| 你懂的福利视频| 四虎久久精品国产| 久久国产一区二区| 精品久久久久久中文| 国产高清视频免费| 亚洲 国产精品 日韩| 国产伦久视频免费观看 视频| 成人免费一级毛片在线播放视频| 九九热国产视频| 精品视频在线观看一区二区| 午夜久久网| 精品久久久久久影院免费| 高清一级做a爱过程不卡视频| 日日日夜夜操| 999精品影视在线观看| 国产视频一区二区三区四区| 国产网站麻豆精品视频| 日本伦理黄色大片在线观看网站| 国产伦久视频免费观看 视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产高清在线精品一区二区 | 成人免费观看的视频黄页| 九九精品久久| 国产网站免费在线观看| 日韩中文字幕在线播放| 精品视频在线观看视频免费视频 | 麻豆网站在线免费观看| 国产麻豆精品免费密入口| 天天色色网| 一本高清在线| 久久国产影院| 四虎影视久久久免费| 沈樵在线观看福利| 精品国产一区二区三区免费| 一级毛片视频播放| 天天做日日爱夜夜爽| 色综合久久久久综合体桃花网| 国产精品1024永久免费视频| 免费一级片网站| 国产一区精品| 精品视频在线观看免费| 日本免费看视频| 黄视频网站免费看| 日本伦理片网站| 国产亚洲免费观看| 久久99中文字幕久久| 久久精品免视看国产明星| 午夜激情视频在线观看| 国产国语对白一级毛片| 久久久久久久免费视频| 九九九网站| 日韩专区第一页| 台湾毛片| 国产a免费观看| 国产一区免费观看| 二级片在线观看| 成人免费高清视频| 精品久久久久久影院免费| 国产视频一区二区在线播放| 黄视频网站在线免费观看| 国产一区二区精品久久91| 精品久久久久久中文字幕2017| 国产原创视频在线| 久久99中文字幕| 香蕉视频三级| 日日日夜夜操| 91麻豆精品国产片在线观看| 日韩专区在线播放| 欧美激情一区二区三区视频 | 久久99中文字幕久久| 四虎影视库国产精品一区| 日韩av东京社区男人的天堂| 久久国产精品只做精品| 欧美另类videosbestsex久久| 亚欧成人毛片一区二区三区四区| 久久国产影院| 久久国产精品只做精品| 国产视频一区二区在线观看| 日韩av成人| 国产极品白嫩美女在线观看看 | 国产麻豆精品免费密入口| 麻豆系列 在线视频| 99久久精品国产高清一区二区 | 国产成人啪精品视频免费软件| 91麻豆精品国产片在线观看| 国产一区免费在线观看| 国产一区二区精品| 久久99这里只有精品国产| 久久99中文字幕| 午夜久久网| 青草国产在线| 九九热精品免费观看| 一a一级片| 日本在线www| 欧美电影免费| 美女免费毛片| 久草免费资源| 日韩中文字幕在线播放| 亚欧成人乱码一区二区| 国产成人精品一区二区视频| 国产a免费观看| 青草国产在线观看| 国产91精品一区| 香蕉视频三级| 久草免费在线视频| 国产一区二区精品在线观看| 四虎影视久久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美激情一区二区三区在线播放| 韩国三级香港三级日本三级la| 你懂的在线观看视频| 麻豆系列国产剧在线观看| a级黄色毛片免费播放视频|