<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 命令行工具 > 譯者:[OSGeo 中國](https://www.osgeo.cn/) 0.10 新版功能. Scrapy 通過控制 `scrapy` 命令行工具,這里稱為“scrapy工具”,用于區分子命令,我們稱之為“命令”或“scrapy命令”。 Scrapy工具提供了多個命令,用于多種目的,每個命令接受一組不同的參數和選項。 (The `scrapy deploy` 命令已在1.0中刪除,以支持獨立的 `scrapyd-deploy` . 見 [Deploying your project](https://scrapyd.readthedocs.io/en/latest/deploy.html) ) ## 配置設置 Scrapy將查找ini樣式的配置參數 `scrapy.cfg` 標準位置的文件: 1. `/etc/scrapy.cfg` 或 `c:\scrapy\scrapy.cfg` (全系統) 2. `~/.config/scrapy.cfg` ( `$XDG_CONFIG_HOME` ) `~/.scrapy.cfg` ( `$HOME` )用于全局(用戶范圍)設置,以及 3. `scrapy.cfg` 在Scrapy項目的根目錄中(參見下一節)。 這些文件中的設置按列出的首選順序合并:用戶定義的值比系統范圍的默認值具有更高的優先級,并且在定義時,項目范圍的設置將覆蓋所有其他設置。 Scrapy還可以理解并通過許多環境變量進行配置。目前有: * `SCRAPY_SETTINGS_MODULE` (見 [指定設置](settings.html#topics-settings-module-envvar) ) * `SCRAPY_PROJECT` (見 [在項目之間共享根目錄](#topics-project-envvar) ) * `SCRAPY_PYTHON_SHELL` (見 [Scrapy shell](shell.html#topics-shell) ) ## Scrapy 項目的默認結構 在深入研究命令行工具及其子命令之前,讓我們先了解一個零碎項目的目錄結構。 盡管可以修改,但默認情況下,所有零碎項目都具有相同的文件結構,類似于: ```py scrapy.cfg myproject/ __init__.py items.py middlewares.py pipelines.py settings.py spiders/ __init__.py spider1.py spider2.py ... ``` 目錄 `scrapy.cfg` 文件駐留稱為 項目根目錄. 該文件包含定義項目設置的python模塊的名稱。下面是一個例子: ```py [settings] default = myproject.settings ``` ## 在項目之間共享根目錄 一個項目根目錄,其中包含 `scrapy.cfg` ,可以由多個零碎項目共享,每個項目都有自己的設置模塊。 在這種情況下,必須為下面的設置模塊定義一個或多個別名 `[settings]` 在你 `scrapy.cfg` 文件:: ```py [settings] default = myproject1.settings project1 = myproject1.settings project2 = myproject2.settings ``` 默認情況下, `scrapy` 命令行工具將使用 `default` 設置。使用 `SCRAPY_PROJECT` 用于指定其他項目的環境變量 `scrapy` 使用: ```py $ scrapy settings --get BOT_NAME Project 1 Bot $ export SCRAPY_PROJECT=project2 $ scrapy settings --get BOT_NAME Project 2 Bot ``` ## 使用 `scrapy` 工具 您可以通過運行無參數的scrapy工具開始,它將打印一些用法幫助和可用的命令: ```py Scrapy X.Y - no active project Usage: scrapy <command> [options] [args] Available commands: crawl Run a spider fetch Fetch a URL using the Scrapy downloader [...] ``` 如果您在一個零碎的項目中,第一行將打印當前活動的項目。在本例中,它是從項目外部運行的。如果從項目內部運行,它將打印如下內容: ```py Scrapy X.Y - project: myproject Usage: scrapy <command> [options] [args] [...] ``` ### 創建項目 你通常會做的第一件事就是 `scrapy` 工具是創建零碎項目: ```py scrapy startproject myproject [project_dir] ``` 它將在 `project_dir` 目錄。如果 `project_dir` 沒有指定, `project_dir` 將與 `myproject` . 接下來,進入新的項目目錄: ```py cd project_dir ``` 你已經準備好使用 `scrapy` 從那里管理和控制項目的命令。 ### 控制性項目 你使用 `scrapy` 從項目內部使用工具來控制和管理它們。 例如,要創建新的 Spider : ```py scrapy genspider mydomain mydomain.com ``` 一些下流的命令(比如 [`crawl`](#std:command-crawl) )必須從零碎的項目內部運行。見 [commands reference](#topics-commands-ref) 下面是關于必須從項目內部運行哪些命令的詳細信息,而不是。 還要記住,當從內部項目運行某些命令時,它們的行為可能略有不同。例如,fetch命令將使用 Spider 重寫的行為(例如 `user_agent` 屬性來重寫用戶代理)如果要獲取的URL與某個特定的 Spider 相關聯。這是故意的,因為 `fetch` 命令用于檢查 Spider 如何下載頁面。 ## 可用工具命令 本節包含可用的內置命令列表,其中包含說明和一些用法示例。記住,您可以通過運行以下命令獲取有關每個命令的更多信息: ```py scrapy <command> -h ``` 您可以使用以下命令查看所有可用命令: ```py scrapy -h ``` 有兩種命令,一種是只從零碎項目(特定于項目的命令)內部工作的命令,另一種是不使用活動零碎項目(全局命令)的命令,盡管從項目內部運行時它們的行為可能略有不同(因為它們將使用項目覆蓋設置)。 全局命令: * [`startproject`](#std:command-startproject) * [`genspider`](#std:command-genspider) * [`settings`](#std:command-settings) * [`runspider`](#std:command-runspider) * [`shell`](#std:command-shell) * [`fetch`](#std:command-fetch) * [`view`](#std:command-view) * [`version`](#std:command-version) 僅Project命令: * [`crawl`](#std:command-crawl) * [`check`](#std:command-check) * [`list`](#std:command-list) * [`edit`](#std:command-edit) * [`parse`](#std:command-parse) * [`bench`](#std:command-bench) ### 啟動項目 * Syntax: `scrapy startproject &lt;project_name&gt; [project_dir]` * 需要項目:_否_ 創建一個名為 `project_name` 下 `project_dir` 目錄。如果 `project_dir` 沒有指定, `project_dir` 將與 `project_name` . 使用實例: ```py $ scrapy startproject myproject ``` ### 基因 Spider * Syntax: `scrapy genspider [-t template] &lt;name&gt; &lt;domain&gt;` * 需要項目:_否_ 在當前文件夾或當前項目的 `spiders` 文件夾(如果從項目內部調用)。這個 `&lt;name&gt;` 參數設置為spider的 `name` ,同時 `&lt;domain&gt;` 用于生成 `allowed_domains` 和 `start_urls` Spider 的屬性。 使用實例: ```py $ scrapy genspider -l Available templates: basic crawl csvfeed xmlfeed $ scrapy genspider example example.com Created spider 'example' using template 'basic' $ scrapy genspider -t crawl scrapyorg scrapy.org Created spider 'scrapyorg' using template 'crawl' ``` 這只是一個基于預先定義的模板創建spider的快捷命令,但肯定不是創建spider的唯一方法。您可以自己創建 Spider 源代碼文件,而不是使用這個命令。 ### 爬行 * Syntax: `scrapy crawl &lt;spider&gt;` * 需要項目:_是_ 開始用 Spider 爬行。 用法示例: ```py $ scrapy crawl myspider [ ... myspider starts crawling ... ] ``` ### 檢查 * Syntax: `scrapy check [-l] &lt;spider&gt;` * 需要項目:_是_ 運行合同檢查。 用法示例: ```py $ scrapy check -l first_spider * parse * parse_item second_spider * parse * parse_item $ scrapy check [FAILED] first_spider:parse_item >>> 'RetailPricex' field is missing [FAILED] first_spider:parse >>> Returned 92 requests, expected 0..4 ``` ### 列表 * Syntax: `scrapy list` * 需要項目:_是_ 列出當前項目中所有可用的spider。每行輸出一個 Spider 。 使用實例: ```py $ scrapy list spider1 spider2 ``` ### 編輯 * Syntax: `scrapy edit &lt;spider&gt;` * 需要項目:_是_ 使用中定義的編輯器編輯給定的 Spider `EDITOR` 環境變量或(如果未設置) [`EDITOR`](settings.html#std:setting-EDITOR) 設置。 這個命令僅作為最常見情況下的快捷方式提供,開發人員當然可以自由選擇任何工具或IDE來編寫和調試spider。 使用實例: ```py $ scrapy edit spider1 ``` ### 取來 * Syntax: `scrapy fetch &lt;url&gt;` * 需要項目:_否_ 使用ScrapyDownloader下載給定的URL,并將內容寫入標準輸出。 這個命令的有趣之處在于它獲取了 Spider 如何下載它的頁面。例如,如果 Spider `USER_AGENT` 覆蓋用戶代理的屬性,它將使用該屬性。 所以這個命令可以用來“查看” Spider 如何獲取特定的頁面。 如果在項目之外使用,則不會應用特定的每 Spider 行為,它只會使用默認的scrapy下載器設置。 支持的選項: * `--spider=SPIDER` :繞過Spider自動檢測并強制使用特定Spider * `--headers` :打印響應的HTTP頭而不是響應的正文 * `--no-redirect` :不遵循HTTP 3xx重定向(默認為遵循它們) 用法示例: ```py $ scrapy fetch --nolog http://www.example.com/some/page.html [ ... html content here ... ] $ scrapy fetch --nolog --headers http://www.example.com/ {'Accept-Ranges': ['bytes'], 'Age': ['1263 '], 'Connection': ['close '], 'Content-Length': ['596'], 'Content-Type': ['text/html; charset=UTF-8'], 'Date': ['Wed, 18 Aug 2010 23:59:46 GMT'], 'Etag': ['"573c1-254-48c9c87349680"'], 'Last-Modified': ['Fri, 30 Jul 2010 15:30:18 GMT'], 'Server': ['Apache/2.2.3 (CentOS)']} ``` ### 看法 * Syntax: `scrapy view &lt;url&gt;` * 需要項目:_否_ 在瀏覽器中打開給定的URL,因為您的廢 Spider 會“看到”它。有時候 Spider 看到的頁面與普通用戶不同,所以這可以用來檢查 Spider “看到”什么,并確認它是你所期望的。 支持的選項: * `--spider=SPIDER` :繞過Spider自動檢測并強制使用特定Spider * `--no-redirect` :不遵循HTTP 3xx重定向(默認為遵循它們) 使用實例: ```py $ scrapy view http://www.example.com/some/page.html [ ... browser starts ... ] ``` ### 殼 * Syntax: `scrapy shell [url]` * 需要項目:_否_ 為給定的URL(如果給定)啟動scrapy shell;如果沒有給定URL,則為空。還支持Unix風格的本地文件路徑,無論是相對于 `./` 或 `../` 前綴或絕對文件路徑。見 [Scrapy shell](shell.html#topics-shell) 更多信息。 支持的選項: * `--spider=SPIDER` :繞過Spider自動檢測并強制使用特定Spider * `-c code` :評估shell中的代碼,打印結果并退出 * `--no-redirect` :不遵循HTTP 3xx重定向(默認為遵循它們);這只影響在命令行上作為參數傳遞的URL;一旦進入shell, `fetch(url)` 默認情況下仍將遵循HTTP重定向。 使用實例: ```py $ scrapy shell http://www.example.com/some/page.html [ ... scrapy shell starts ... ] $ scrapy shell --nolog http://www.example.com/ -c '(response.status, response.url)' (200, 'http://www.example.com/') # shell follows HTTP redirects by default $ scrapy shell --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)' (200, 'http://example.com/') # you can disable this with --no-redirect # (only for the URL passed as command line argument) $ scrapy shell --no-redirect --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)' (302, 'http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F') ``` ### 解析 * Syntax: `scrapy parse &lt;url&gt; [options]` * 需要項目:_是_ 獲取給定的URL,并使用處理它的spider,使用 `--callback` 選項,或 `parse` 如果沒有給出。 支持的選項: * `--spider=SPIDER` :繞過Spider自動檢測并強制使用特定Spider * `--a NAME=VALUE` :set spider參數(可以重復) * `--callback` 或 `-c` :用作分析響應的回調的spider方法 * `--meta` 或 `-m` :將傳遞給回調請求的附加請求元。這必須是有效的JSON字符串。示例:--meta='“foo”:“bar”' * `--pipelines` :通過管道處理項目 * `--rules` 或 `-r` 使用 [`CrawlSpider`](spiders.html#scrapy.spiders.CrawlSpider "scrapy.spiders.CrawlSpider") 發現用于解析響應的回調(即spider方法)的規則 * `--noitems` :不顯示刮掉的項目 * `--nolinks` :不顯示提取的鏈接 * `--nocolour` :避免使用Pygments對輸出著色 * `--depth` 或 `-d` :應遞歸執行請求的深度級別(默認值:1) * `--verbose` 或 `-v` :顯示每個深度級別的信息 使用實例: ```py $ scrapy parse http://www.example.com/ -c parse_item [ ... scrapy log lines crawling example.com spider ... ] >>> STATUS DEPTH LEVEL 1 <<< # Scraped Items ------------------------------------------------------------ [{'name': 'Example item', 'category': 'Furniture', 'length': '12 cm'}] # Requests ----------------------------------------------------------------- [] ``` ### 設置 * Syntax: `scrapy settings [options]` * 需要項目:_否_ 獲取 Scrapy 設置的值。 如果在項目中使用,它將顯示項目設置值,否則它將顯示該設置的默認碎片值。 示例用法: ```py $ scrapy settings --get BOT_NAME scrapybot $ scrapy settings --get DOWNLOAD_DELAY 0 ``` ### 運行 Spider * Syntax: `scrapy runspider &lt;spider_file.py&gt;` * 需要項目:_否_ 運行一個包含在python文件中的spider,而不必創建一個項目。 示例用法: ```py $ scrapy runspider myspider.py [ ... spider starts crawling ... ] ``` ### 版本 * Syntax: `scrapy version [-v]` * 需要項目:_否_ 打印殘缺版本。如果使用 `-v` 它還打印python、twisted和platform信息,這對bug報告很有用。 ### 長凳 0.17 新版功能. * Syntax: `scrapy bench` * 需要項目:_否_ 運行一個快速基準測試。 [Benchmarking](benchmarking.html#benchmarking) . ## 自定義項目命令 還可以使用 [`COMMANDS_MODULE`](#std:setting-COMMANDS_MODULE) 設置。請參閱中的scrappy命令 [scrapy/commands](https://github.com/scrapy/scrapy/tree/master/scrapy/commands) 有關如何實現命令的示例。 ### COMMANDS_MODULE 違約: `''` (空字符串) 用于查找自定義 Scrapy 命令的模塊。這用于為您的Scrapy項目添加自定義命令。 例子:: ```py COMMANDS_MODULE = 'mybot.commands' ``` ### 通過setup.py入口點注冊命令 注解 這是一個實驗特性,小心使用。 還可以通過添加 `scrapy.commands` 庫入口點中的節 `setup.py` 文件。 下面的示例添加了 `my_command` 命令: ```py from setuptools import setup, find_packages setup(name='scrapy-mymodule', entry_points={ 'scrapy.commands': [ 'my_command=my_scrapy_module.commands:MyCommand', ], }, ) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看