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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

初识scrapy

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识scrapy 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1、scrapy安裝與環境依賴
  • 2、創建項目
  • 3、項目目錄介紹
  • 4、scrapy框架介紹: 5大核心組件與數據流向
  • 5.使用scrapy框架爬取糗百
  • 6、scrapy爬取校花網人名與圖片下載鏈接

1、scrapy安裝與環境依賴

# 1.在安裝scrapy前需要安裝好相應的依賴庫, 再安裝scrapy, 具體安裝步驟如下:(1).安裝lxml庫: pip install lxml(2).安裝wheel: pip install wheel(3).安裝twisted: pip install twisted文件路徑(twisted需下載后本地安裝,下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted)(版本選擇如下圖,版本后面有解釋,請根據自己實際選擇)(4).安裝pywin32: pip install pywin32(注意:以上安裝步驟一定要確保每一步安裝都成功,沒有報錯信息,如有報錯自行百度解決)(5).安裝scrapy: pip install scrapy(注意:以上安裝步驟一定要確保每一步安裝都成功,沒有報錯信息,如有報錯自行百度解決)(6).成功驗證:在cmd命令行輸入scrapy,顯示Scrapy1.6.0-no active project,證明安裝成功

2、創建項目

1.手動創建一個目錄test
2.在test文件夾下創建爬蟲項目為spiderpro: scrapy startproject spiderpro
3.進入項目文件夾: cd spiderpro
4.創建爬蟲文件: scrapy genspider 爬蟲名 域名

3、項目目錄介紹

spiderpro
  spiderpro # 項目目錄
    init
    spiders:爬蟲文件目錄
      init
      tests.py:爬蟲文件
    items.py:定義爬取數據持久化的數據結構
    middlewares.py:定義中間件
    pipelines.py:管道,持久化存儲相關
    settings.py:配置文件
  venv:虛擬環境目錄
  scrapy.cfg: scrapy項目配置文件

說明:

  • spiders:其內包含一個個Spider的實現, 每個Spider是一個單獨的文件
  • items.py:它定義了Item數據結構, 爬取到的數據存儲為哪些字段
  • pipelines.py:它定義Item Pipeline的實現
  • settings.py:項目的全局配置
  • middlewares.py:定義中間件, 包括爬蟲中間件和下載中間件
  • scrapy.cfg:它是scrapy項目的配置文件, 其內定義了項目的配置路徑, 部署相關的信息等

4、scrapy框架介紹: 5大核心組件與數據流向

(1).架構:Scrapy Engine: 這是引擎,負責Spiders、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數據傳遞等等!Scheduler(調度器): 它負責接受引擎發送過來的requests請求,并按照一定的方式進行整理排列,入隊、并等待Scrapy Engine(引擎)來請求時,交給引擎。Downloader(下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spiders來處理,Spiders:它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器),Item Pipeline:它負責處理Spiders中獲取到的Item,并進行處理,比如去重,持久化存儲(存數據庫,寫入文件,總之就是保存數據用的)Downloader Middlewares(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎和Spiders中間‘通信‘的功能組件(比如進入Spiders的Responses;和從Spiders出去的Requests) (2).工作流:1.spider將請求發送給引擎, 引擎將request發送給調度器進行請求調度2.調度器把接下來要請求的request發送給引擎, 引擎傳遞給下載器, 中間會途徑下載中間件3.下載攜帶request訪問服務器, 并將爬取內容response返回給引擎, 引擎將response返回給spider4.spider將response傳遞給自己的parse進行數據解析處理及構建item一系列的工作, 最后將item返回給引擎, 引擎傳遞個pipeline5.pipe獲取到item后進行數據持久化6.以上過程不斷循環直至爬蟲程序終止

5.使用scrapy框架爬取糗百

需求: 爬取糗事百科熱門板塊,每一條的標題,好笑,評論條數及作者信息,解析爬取的信息數據,定制item數據存儲結構,最終將數據存儲于MongoDB數據庫中.

創建項目:
scrapy startproject qsbk # 創建項目
cd qsbk # 切換到項目目錄
scrapy genspider qsbk_hot www.qiushibaike.com # 創建爬蟲文件, qsbk_hot為爬蟲名, www…com為爬取范圍

# item文件定義數據存儲的字段: import scrapy class QsbkItem(scrapy.Item):title = scrapy.Field() # 標題lau = scrapy.Field() # 好笑數comment = scrapy.Field() # 評論數auth = scrapy.Field() # 作者 # spider文件中定義解析數據的方法 class QsbkHotSpider(scrapy.Spider):name ='qsbk_hot'# allowed_domains = ['www.qiushibaike.com'] # 無用, 可注釋掉start_urls =['http://www.qiushibaike.com/']# 思路:一條熱點數據在前端中對應一個li標簽, 將一頁中的所有li標簽取出, 再進一步操作def parse(self, response):li_list = response.selector.xpath('//div[@class="recommend-article"]/ul/li')# 循環li標簽組成的列表, 先實例化item, 再取需要的字段, 并該item對象的相應屬性賦值for li in li_list:# 實例化item對象item =QsbkItem()# 解析獲取title(標題), lau(好笑數), comment(評論數), auth(作者)等信息title = ....lau = ....comment = ....auth = ....# 將字段的值存儲在item的屬性中# 返回item, 框架會自動將item傳送至pipeline中的指定類yield item # 在pipeline中定義管道類進行數據的存儲 import pymongoclassQsbkPipeline(object):# 連接MongoDB數據庫conn = pymongo.MongoClient("localhost", 27017)db = conn.qiubaitable = db.qb_hotdef process_item(self, item, spider):# 向數據庫中出入數據self.table.insert(dict(item))# 此處return item是為了下一個管道類能夠接收到item進行存儲return itemdef close_spider(self):# 關閉數據庫連接self.conn.close() # 此示例中配置文件中的配置的項, 注意是不是全部的配置, 是針對該項目增加或修改的配置項# 忽略robots協議 ROBOTSTXT_OBEY =False# UA偽裝 USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36'# 管道類的注冊配置 ITEM_PIPELINES ={ 'qsbk.pipelines.QsbkPipeline':300, }

6、scrapy爬取校花網人名與圖片下載鏈接

需求: 爬取校花網大學?;ǖ哪J的第一頁的所有圖片src和人名, 并通過管道存入mongodb數據庫

創建項目:
scrapy startproject xiaohuaspider # 創建項目
cd xiaohuaspider # 切換到項目目錄
scrapy genspider hua www.baidu.com # 創建爬蟲文件, hua為爬蟲名, www.baidu.com為爬取范圍

創建item類, 用于存儲解析出的數據
import scrapy
class XiaohuaspiderItem(scrapy.Item):
name = scrapy.Field()
src = scrapy.Field()

# spider中定義爬取的行為與解析數據的操作 import scrapy from ..items import XiaohuaspiderItemclass HuaSpider(scrapy.Spider):name = 'hua'# allowed_domains = ['www.baidu.com']start_urls = ['http://www.xiaohuar.com/hua/']def parse(self, response):div_list = response.xpath('//div[@class="img"]')for div in div_list:item = XiaohuaspiderItem()name = ...(xpath匹配)src = ...(xpath匹配)# 將數據存儲到item的屬性中item[...] = ...item[...] = ...yield item # itemPipeline編碼, 持久化數據到本地 import pymongoclass XiaohuaspiderPipeline(object):conn = pymongo.MongoClient('localhost', 27017)db = conn.xiaohuatable = db.huadef process_item(self, item, spider):self.table.insert(dict(item))return itemdef close_spider(self, spider):self.conn.close() # 配置項: # UA偽裝: USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36'# 忽略robots協議: ROBOTSTXT_OBEY = False# 開啟管道類 ITEM_PIPELINES = {'xiaohuaspider.pipelines.XiaohuaspiderPipeline': 300, }

總結

以上是生活随笔為你收集整理的初识scrapy的全部內容,希望文章能夠幫你解決所遇到的問題。

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