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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2025/3/12 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 网络爬虫笔记10 -- Scrapy 使用入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python 網(wǎng)絡(luò)爬蟲(chóng)筆記10 – Scrapy 使用入門(mén)


Python 網(wǎng)絡(luò)爬蟲(chóng)系列筆記是筆者在學(xué)習(xí)嵩天老師的《Python網(wǎng)絡(luò)爬蟲(chóng)與信息提取》課程及筆者實(shí)踐網(wǎng)絡(luò)爬蟲(chóng)的筆記。

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


一、Scrapy 使用簡(jiǎn)化步驟


1、建立一個(gè) Scrapy 爬蟲(chóng)工程

# 打開(kāi) cmd ,cd到要?jiǎng)?chuàng)建工程的目錄,輸入命令 scrapy startproject scrapy_demo

工程的文件結(jié)構(gòu):

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

2、在工程中產(chǎn)生一個(gè)Scrapy爬蟲(chóng)

作用:

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

自動(dòng)生成的 demo.py :

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

3、配置產(chǎn)生的spider爬蟲(chóng)

配置內(nèi)容:

  • 設(shè)置初始URL地址
  • 編寫(xiě)獲取頁(yè)面后的解析方法

修改后的 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對(duì)象,保存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、運(yùn)行爬蟲(chóng),獲取網(wǎng)頁(yè)

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

二、Scrapy 使用標(biāo)準(zhǔn)步驟


  • 創(chuàng)建一個(gè)工程和Spider模板
  • 編寫(xiě)Spider編寫(xiě)Spider
  • 編寫(xiě)Item Pipeline編寫(xiě)Item Pipeline
  • 優(yōu)化配置策略優(yōu)化配置策略

  • 三、Scrapy 數(shù)據(jù)類(lèi)型


    1、Request 類(lèi):class scrapy.http.Request()

    • Request對(duì)象表示一個(gè)HTTP請(qǐng)求,由Spider生成,由Downloader執(zhí)行
    屬性或方法說(shuō)明
    .urlRequest對(duì)應(yīng)的請(qǐng)求URL地址
    .method對(duì)應(yīng)的請(qǐng)求方法,‘GET’ 'POST’等
    .headers字典類(lèi)型風(fēng)格的請(qǐng)求頭
    .body請(qǐng)求內(nèi)容主體,字符串類(lèi)型
    .meta用戶添加的擴(kuò)展信息,在Scrapy內(nèi)部模塊間傳遞信息使用
    .copy()復(fù)制該請(qǐng)求

    2、Response 類(lèi):class scrapy.http.Response()

    • Response對(duì)象表示一個(gè)HTTP響應(yīng),由Downloader生成,由Spider處理
    屬性或方法說(shuō)明
    .urlResponse對(duì)應(yīng)的URL地址
    .statusHTTP狀態(tài)碼,默認(rèn)是200
    .headersResponse對(duì)應(yīng)的頭部信息
    .bodyResponse對(duì)應(yīng)的內(nèi)容信息,字符串類(lèi)型
    .flags一組標(biāo)記
    .request產(chǎn)生Response類(lèi)型對(duì)應(yīng)的Request對(duì)象
    .copy()復(fù)制該響應(yīng)

    3、Item 類(lèi):class scrapy.item.Item()

    • Item對(duì)象表示一個(gè)從HTML頁(yè)面中提取的信息內(nèi)容,由Spider生成,由Item Pipeline處理
    • Item類(lèi)似字典類(lèi)型,可以按照字典類(lèi)型操作

    四、CSS Selector


    • 用來(lái)檢索HTML網(wǎng)頁(yè)的內(nèi)容
    # 格式 <HTML>.css('標(biāo)簽名稱(chēng)::attr(標(biāo)簽屬性)').extract()# 示例 <HTML>.css('a::attr(href)').extract()

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。