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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 网络爬虫笔记10 -- Scrapy 使用入门

發布時間:2025/3/12 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 网络爬虫笔记10 -- Scrapy 使用入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python 網絡爬蟲筆記10 – Scrapy 使用入門


Python 網絡爬蟲系列筆記是筆者在學習嵩天老師的《Python網絡爬蟲與信息提取》課程及筆者實踐網絡爬蟲的筆記。

課程鏈接:Python網絡爬蟲與信息提取
參考文檔:
Requests 官方文檔(英文)
Requests 官方文檔(中文)
Beautiful Soup 官方文檔
re 官方文檔
Scrapy 官方文檔(英文)
Scrapy 官方文檔(中文)


一、Scrapy 使用簡化步驟


1、建立一個 Scrapy 爬蟲工程

# 打開 cmd ,cd到要創建工程的目錄,輸入命令 scrapy startproject scrapy_demo

工程的文件結構:

scrapy_demo/ # 工程根目錄scrapy.cfg # 部署Scrapy爬蟲的配置文件scrapy_demo/ # Scrapy框架的用戶自定義Python代碼__pycache__/ # 緩存目錄,無需修改spiders/ # piders代碼模板目錄(繼承類),此目錄下可添加自定義的spider代碼__init__.py # 初始文件,無需修改__pycache__/ # 緩存目錄,無需修改__init__.py # 初始化腳本items.py # Items代碼模板(繼承類)middlewares.py # Middlewares代碼模板(繼承類)pipelines.py # Pipelines代碼模板(繼承類)settings.py # Scrapy爬蟲的配置文件

2、在工程中產生一個Scrapy爬蟲

作用:

  • 生成一個名稱為demo的spider
  • 在 spiders 目錄下增加代碼文件 demo.py
  • 該命令僅用于生成 demo.py,該文件也可以手工生成
# 打開 cmd ,cd到 Scrapy工程的目錄,輸入命令(爬取的網站網址為可選參數) scrapy genspider demo python123.io

自動生成的 demo.py :

# -*- coding: utf-8 -*- import scrapyclass DemoSpider(scrapy.Spider):name = 'demo'allowed_domains = ['python123.io']start_urls = ['http://python123.io/ws/demo.html']# 處理響應,解析由Downloader生成Response對象def parse(self, response):pass

3、配置產生的spider爬蟲

配置內容:

  • 設置初始URL地址
  • 編寫獲取頁面后的解析方法

修改后的 demo.py(普通版):

# -*- coding: utf-8 -*- import scrapyclass DemoSpider(scrapy.Spider):"""普通版"""name = 'demo'# allowed_domains = ['python123.io']start_urls = ['http://python123.io/ws/demo.html']# 解析Response對象,保存HTML文件def parse(self, response):file_name = response.url.split('/')[-1]with open(file_name, 'wb') as f:f.write(response.body)self.log('Saved file %s.' % file_name)

修改后的 demo.py(yield版):

# -*- coding: utf-8 -*- import scrapyclass DemoSpider(scrapy.Spider):"""yield 版"""name = 'demo'def start_requests(self):urls = ['http://python123.io/ws/demo.html']for url in urls:yield scrapy.Request(url=url, callback=self.parse)def parse(self, response):file_name = response.url.split('/')[-1]with open(file_name, 'wb') as f:f.write(response.body)self.log('Saved file %s.' % file_name)

4、運行爬蟲,獲取網頁

# 打開 cmd ,cd到 Scrapy工程的目錄,輸入命令 scrapy crawl demo

二、Scrapy 使用標準步驟


  • 創建一個工程和Spider模板
  • 編寫Spider編寫Spider
  • 編寫Item Pipeline編寫Item Pipeline
  • 優化配置策略優化配置策略

  • 三、Scrapy 數據類型


    1、Request 類:class scrapy.http.Request()

    • Request對象表示一個HTTP請求,由Spider生成,由Downloader執行
    屬性或方法說明
    .urlRequest對應的請求URL地址
    .method對應的請求方法,‘GET’ 'POST’等
    .headers字典類型風格的請求頭
    .body請求內容主體,字符串類型
    .meta用戶添加的擴展信息,在Scrapy內部模塊間傳遞信息使用
    .copy()復制該請求

    2、Response 類:class scrapy.http.Response()

    • Response對象表示一個HTTP響應,由Downloader生成,由Spider處理
    屬性或方法說明
    .urlResponse對應的URL地址
    .statusHTTP狀態碼,默認是200
    .headersResponse對應的頭部信息
    .bodyResponse對應的內容信息,字符串類型
    .flags一組標記
    .request產生Response類型對應的Request對象
    .copy()復制該響應

    3、Item 類:class scrapy.item.Item()

    • Item對象表示一個從HTML頁面中提取的信息內容,由Spider生成,由Item Pipeline處理
    • Item類似字典類型,可以按照字典類型操作

    四、CSS Selector


    • 用來檢索HTML網頁的內容
    # 格式 <HTML>.css('標簽名稱::attr(標簽屬性)').extract()# 示例 <HTML>.css('a::attr(href)').extract()

    總結

    以上是生活随笔為你收集整理的Python 网络爬虫笔记10 -- Scrapy 使用入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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