日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

『Scrapy』爬虫框架入门

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 『Scrapy』爬虫框架入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

框架結構

引擎:處于中央位置協調工作的模塊

spiders:生成需求url直接處理響應的單元

調度器:生成url隊列(包括去重等)

下載器:直接和互聯網打交道的單元

管道:持久化存儲的單元

框架安裝

一般都會推薦pip,但實際上我是用pip就是沒安裝成功,推薦anaconda,使用conda install scarpy來安裝。

scarpy需要使用命令行,由于我是使用win,所以還需要把scarpy添加到path中,下載好的scarpy放在anaconda的包目錄下,找到并添加。

框架入門

創建項目

在開始爬取之前,您必須創建一個新的Scrapy項目。 進入您打算存儲代碼的目錄中,運行下列命令:

scrapy startproject tutorial

該命令將會創建包含下列內容的 tutorial 目錄,這個目錄會創建在當前cmd的工作目錄下:

tutorial/scrapy.cfgtutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ... 

這些文件分別是:

  • scrapy.cfg: 項目的配置文件
  • tutorial/: 該項目的python模塊。之后您將在此加入代碼。
  • tutorial/items.py: 項目中的item文件.
  • tutorial/pipelines.py: 項目中的pipelines文件.
  • tutorial/settings.py: 項目的設置文件.
  • tutorial/spiders/: 放置spider代碼的目錄.

實際上這算也是一個項目,可以使用pycharm加載。

編寫爬蟲

Spider是用戶編寫用于從單個網站(或者一些網站)爬取數據的類。

為了創建一個Spider,您必須繼承 scrapy.Spider 類, 且定義以下三個屬性:

  • name: 用于區別Spider。 該名字必須是唯一的,您不可以為不同的Spider設定相同的名字。

  • start_urls: 包含了Spider在啟動時進行爬取的url列表。 因此,第一個被獲取到的頁面將是其中之一。 后續的URL則從初始的URL獲取到的數據中提取

  • parse() 是spider的一個方法。 被調用時,每個初始URL完成下載后生成的 Response 對象將會作為唯一的參數傳遞給該函數。 該方法負責解析返回的數據(response data),提取數據(生成item)以及生成需要進一步處理的URL的 Request 對象。

  • allowed_domains:域范圍,非此域內url不予爬取。

spider文件要保存在Spider目錄下,文件名和類名都可以隨便取,但是name屬性是唯一的,調用時用的也是name屬性。

import scrapyclass DmozSpider(scrapy.Spider):name = "dmoz"allowed_domains = ["dmoz.org"]start_urls = ["http://www.dmoz.org/Computers/Programming/Languages/Python/Books/","http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"]def parse(self, response):filename = response.url.split("/")[-2]with open(filename, 'wb') as f:f.write(response.body)

開始爬取

scrapy crawl dmoz

?輸出類似下面:

2014-01-23 18:13:07-0400 [scrapy] INFO: Scrapy started (bot: tutorial) 2014-01-23 18:13:07-0400 [scrapy] INFO: Optional features available: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Overridden settings: {} 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled extensions: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled downloader middlewares: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled spider middlewares: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled item pipelines: ... 2014-01-23 18:13:07-0400 [dmoz] INFO: Spider opened 2014-01-23 18:13:08-0400 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: None) 2014-01-23 18:13:09-0400 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: None) 2014-01-23 18:13:09-0400 [dmoz] INFO: Closing spider (finished)

?查看包含 [dmoz] 的輸出,可以看到輸出的log中包含定義在 start_urls 的初始URL,并且與spider中是一一對應的。在log中可以看到其沒有指向其他頁面( (referer:None) )。

回顧一下過程

Scrapy為Spider的 start_urls 屬性中的每個URL創建了 scrapy.Request 對象,并將 parse 方法作為回調函數(callback)賦值給了Request。

Request對象經過調度,執行生成 scrapy.http.Response 對象并送回給spider parse() 方法。

?

?

轉載于:https://www.cnblogs.com/hellcat/p/7421656.html

總結

以上是生活随笔為你收集整理的『Scrapy』爬虫框架入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。