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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一、scrapy爬虫框架——概念作用和工作流程 scrapy的入门使用

發布時間:2024/7/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一、scrapy爬虫框架——概念作用和工作流程 scrapy的入门使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

scrapy的概念和流程

學習目標:
  • 了解 scrapy的概念
  • 了解 scrapy框架的作用
  • 掌握 scrapy框架的運行流程
  • 掌握 scrapy中每個模塊的作用

  • 1. scrapy的概念

    Scrapy是一個Python編寫的開源網絡爬蟲框架。它是一個被設計用于爬取網絡數據、提取結構性數據的框架。

    Scrapy 使用了Twisted['tw?st?d]異步網絡框架,可以加快我們的下載速度。

    Scrapy文檔地址:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html

    2. scrapy框架的作用

    少量的代碼,就能夠快速的抓取

    3. scrapy的工作流程

    3.1 回顧之前的爬蟲流程

    3.2 上面的流程可以改寫為

    3.3 scrapy的流程

    其流程可以描述如下:
  • 爬蟲中起始的url構造成request對象–>爬蟲中間件–>引擎–>調度器
  • 調度器把request–>引擎–>下載中間件—>下載器
  • 下載器發送請求,獲取response響應---->下載中間件---->引擎—>爬蟲中間件—>爬蟲
  • 爬蟲提取url地址,組裝成request對象---->爬蟲中間件—>引擎—>調度器,重復步驟2
  • 爬蟲提取數據—>引擎—>管道處理和保存數據
  • 注意:
    • 圖中中文是為了方便理解后加上去的
    • 圖中綠色線條的表示數據的傳遞
    • 注意圖中中間件的位置,決定了其作用
    • 注意其中引擎的位置,所有的模塊之前相互獨立,只和引擎進行交互

    3.4 scrapy的三個內置對象

    • request請求對象:由url method post_data headers等構成
    • response響應對象:由url body status headers等構成
    • item數據對象:本質是個字典

    3.5 scrapy中每個模塊的具體作用

    注意:
    • 爬蟲中間件和下載中間件只是運行邏輯的位置不同,作用是重復的:如替換UA等

    小結

  • scrapy的概念:Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架
  • scrapy框架的運行流程以及數據傳遞過程:
  • 爬蟲中起始的url構造成request對象–>爬蟲中間件–>引擎–>調度器
  • 調度器把request–>引擎–>下載中間件—>下載器
  • 下載器發送請求,獲取response響應---->下載中間件---->引擎—>爬蟲中間件—>爬蟲
  • 爬蟲提取url地址,組裝成request對象---->爬蟲中間件—>引擎—>調度器,重復步驟2
  • 爬蟲提取數據—>引擎—>管道處理和保存數據
  • scrapy框架的作用:通過少量代碼實現快速抓取
  • 掌握scrapy中每個模塊的作用:
    引擎(engine):負責數據和信號在不腰痛模塊間的傳遞
    調度器(scheduler):實現一個隊列,存放引擎發過來的request請求對象
    下載器(downloader):發送引擎發過來的request請求,獲取響應,并將響應交給引擎
    爬蟲(spider):處理引擎發過來的response,提取數據,提取url,并交給引擎
    管道(pipeline):處理引擎傳遞過來的數據,比如存儲
    下載中間件(downloader middleware):可以自定義的下載擴展,比如設置代理ip
    爬蟲中間件(spider middleware):可以自定義request請求和進行response過濾,與下載中間件作用重復

  • 二、scrapy的入門使用

    學習目標:
  • 掌握 scrapy的安裝
  • 應用 創建scrapy的項目
  • 應用 創建scrapy爬蟲
  • 應用 運行scrapy爬蟲
  • 應用 scrapy定位以及提取數據或屬性值的方法
  • 掌握 response響應對象的常用屬性

  • 1 安裝scrapy

    命令:

    ????sudo apt-get install scrapy

    或者:

    ????pip/pip3 install scrapy

    2 scrapy項目開發流程

  • 創建項目:

    ????scrapy startproject mySpider
  • 生成一個爬蟲:

    ????scrapy genspider itcast itcast.cn
  • 提取數據:

    ????根據網站結構在spider中實現數據采集相關內容
  • 保存數據:

    ????使用pipeline進行數據后續處理和保存
  • 3. 創建項目

    通過命令將scrapy項目的的文件生成出來,后續步驟都是在項目文件中進行相關操作,下面以抓取傳智師資庫來學習scrapy的入門使用:http://www.itcast.cn/channel/teacher.shtml

    創建scrapy項目的命令:

    ????scrapy startproject <項目名字>

    示例:

    ????scrapy startproject myspider

    生成的目錄和文件結果如下:

    4. 創建爬蟲

    通過命令創建出爬蟲文件,爬蟲文件為主要的代碼作業文件,通常一個網站的爬取動作都會在爬蟲文件中進行編寫。

    命令:

    ????在項目路徑下執行:

    ????scrapy genspider <爬蟲名字> <允許爬取的域名>

    爬蟲名字: 作為爬蟲運行時的參數

    允許爬取的域名: 為對于爬蟲設置的爬取范圍,設置之后用于過濾要爬取的url,如果爬取的url與允許的域不通則被過濾掉。

    示例:

    cd myspiderscrapy genspider itcast itcast.cn

    生成的目錄和文件結果如下:

    5. 完善爬蟲

    在上一步生成出來的爬蟲文件中編寫指定網站的數據采集操作,實現數據提取

    5.1 在/myspider/myspider/spiders/itcast.py中修改內容如下:

    import scrapyclass ItcastSpider(scrapy.Spider): # 繼承scrapy.spider# 爬蟲名字 name = 'itcast' # 允許爬取的范圍allowed_domains = ['itcast.cn'] # 開始爬取的url地址start_urls = ['http://www.itcast.cn/channel/teacher.shtml']# 數據提取的方法,接受下載中間件傳過來的responsedef parse(self, response): # scrapy的response對象可以直接進行xpathnames = response.xpath('//div[@class="tea_con"]//li/div/h3/text()') print(names)# 獲取具體數據文本的方式如下# 分組li_list = response.xpath('//div[@class="tea_con"]//li') for li in li_list:# 創建一個數據字典item = {}# 利用scrapy封裝好的xpath選擇器定位元素,并通過extract()或extract_first()來獲取結果item['name'] = li.xpath('.//h3/text()').extract_first() # 老師的名字item['level'] = li.xpath('.//h4/text()').extract_first() # 老師的級別item['text'] = li.xpath('.//p/text()').extract_first() # 老師的介紹print(item)
    注意:
    • scrapy.Spider爬蟲類中必須有名為parse的解析
    • 如果網站結構層次比較復雜,也可以自定義其他解析函數
    • 在解析函數中提取的url地址如果要發送請求,則必須屬于allowed_domains范圍內,但是start_urls中的url地址不受這個限制,我們會在后續的課程中學習如何在解析函數中構造發送請求
    • 啟動爬蟲的時候注意啟動的位置,是在項目路徑下啟動
    • parse()函數中使用yield返回數據,注意:解析函數中的yield能夠傳遞的對象只能是:BaseItem, Request, dict, None

    5.2 定位元素以及提取數據、屬性值的方法

    解析并獲取scrapy爬蟲中的數據: 利用xpath規則字符串進行定位和提取

  • response.xpath方法的返回結果是一個類似list的類型,其中包含的是selector對象,操作和列表一樣,但是有一些額外的方法
  • 額外方法extract():返回一個包含有字符串的列表
  • 額外方法extract_first():返回列表中的第一個字符串,列表為空沒有返回None
  • 5.3 response響應對象的常用屬性

    • response.url:當前響應的url地址
    • response.request.url:當前響應對應的請求的url地址
    • response.headers:響應頭
    • response.requests.headers:當前響應的請求頭
    • response.body:響應體,也就是html代碼,byte類型
    • response.status:響應狀態碼

    6 保存數據

    利用管道pipeline來處理(保存)數據

    6.1 在pipelines.py文件中定義對數據的操作

  • 定義一個管道類
  • 重寫管道類的process_item方法
  • process_item方法處理完item之后必須返回給引擎
  • import jsonclass ItcastPipeline():# 爬蟲文件中提取數據的方法每yield一次item,就會運行一次# 該方法為固定名稱函數def process_item(self, item, spider):print(item)return item

    6.2 在settings.py配置啟用管道

    ITEM_PIPELINES = {'myspider.pipelines.ItcastPipeline': 400 }

    配置項中鍵為使用的管道類,管道類使用.進行分割,第一個為項目目錄,第二個為文件,第三個為定義的管道類。

    配置項中值為管道的使用順序,設置的數值約小越優先執行,該值一般設置為1000以內。

    7. 運行scrapy

    命令:在項目目錄下執行scrapy crawl <爬蟲名字>

    示例:scrapy crawl itcast


    小結

  • scrapy的安裝:pip install scrapy
  • 創建scrapy的項目: scrapy startproject myspider
  • 創建scrapy爬蟲:在項目目錄下執行 scrapy genspider itcast itcast.cn
  • 運行scrapy爬蟲:在項目目錄下執行 scrapy crawl itcast
  • 解析并獲取scrapy爬蟲中的數據:
  • response.xpath方法的返回結果是一個類似list的類型,其中包含的是selector對象,操作和列表一樣,但是有一些額外的方法
  • extract() 返回一個包含有字符串的列表
  • extract_first() 返回列表中的第一個字符串,列表為空沒有返回None
  • scrapy管道的基本使用:
  • 完善pipelines.py中的process_item函數
  • 在settings.py中設置開啟pipeline
  • response響應對象的常用屬性
  • response.url:當前響應的url地址
  • response.request.url:當前響應對應的請求的url地址
  • response.headers:響應頭
  • response.requests.headers:當前響應的請求頭
  • response.body:響應體,也就是html代碼,byte類型
  • response.status:響應狀態碼

  • 總結

    以上是生活随笔為你收集整理的一、scrapy爬虫框架——概念作用和工作流程 scrapy的入门使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 露出调教羞耻91九色 | 伊人久久大| 久久伊人免费视频 | 日韩欧美在线观看一区二区三区 | 误杀1电影免费观看高清完整版 | 国产成人自拍网站 | 日韩精品一区二区三区国语自制 | www.亚洲天堂.com | 一本色道久久综合亚洲精品小说 | 成人羞羞免费 | 欧美xxxxx牲另类人与 | 97超碰人人模人人人爽人人爱 | 亚洲视频精品在线 | 快播视频在线观看 | 亚洲国产一区二区在线观看 | 国产精品福利一区 | 在线播放小视频 | 波多野结衣av中文字幕 | 日本精品视频一区 | www.偷拍.com | 九九九九九热 | www.youjizz.com视频 | 日韩欧美成人网 | 国产超91 | av片免费看 | 亚洲国产成人精品久久 | 麻豆高清免费国产一区 | 日本在线观看a | 中文字幕av一区二区三区谷原希美 | 日本国产亚洲 | 手机看片日本 | 国产成人一区二区三区视频 | 爱爱视频在线播放 | 色偷偷资源 | 黄色av三级 | 色91av | 日韩六九视频 | 久久久久久久久免费看无码 | 老司机精品福利导航 | 日韩高清在线播放 | 欧美一级片黄色 | 丰满秘书被猛烈进入高清播放在 | 天天射夜夜操 | 私人影院毛片 | 欧美性爱精品一区 | 国产天堂 | 97国产精东麻豆人妻电影 | 91人人草| 好色综合 | 久久视频免费观看 | av青娱乐| 中文字幕中出 | 日韩一级免费观看 | 97avcc| 亚洲综人网 | 国产又粗又长又黄的视频 | 色99视频| 一二三区精品视频 | 葵司av电影 | 日韩激情网址 | 成人毛片18女人毛片 | www.777奇米影视 | 总裁憋尿呻吟双腿大开憋尿 | 天堂中文在线资 | 日本一区二区人妻 | 影音先锋中文字幕人妻 | 欧美爽爽爽 | 曰韩毛片 | 欧美无吗 | 色窝窝无码一区二区三区成人网站 | 友田真希一区二区 | 麻豆视频一区二区 | 日韩sese| 超碰爱爱 | 激情av一区 | 在线视频二区 | 亚洲人人在线 | free性m.freesex欧美 | 国产视频一区二区在线播放 | 人妻熟女一区二区三区 | 免费在线黄 | 欧美视频网址 | 日本一二三区在线 | 伊人中文在线 | 成人免费毛片免费 | 喷潮在线 | 日韩av中文在线观看 | 午夜视频久久 | 日韩成人免费在线观看 | 久久久无码精品亚洲无少妇 | 国产一卡二卡在线播放 | 日韩精品在线观看中文字幕 | 亚洲av成人无码一二三在线观看 | 婷婷精品一区二区三区 | 激情网五月| 国产精品国产三级国产aⅴ原创 | 天天干天天操天天碰 | 日本激情电影 | 诱惑の诱惑筱田优在线播放 |