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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Scrapy 1.4 文档 01 初窥 Scrapy

發布時間:2023/11/29 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scrapy 1.4 文档 01 初窥 Scrapy 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初窺 Scrapy

Scrapy 是用于抓取網站并提取結構化數據的應用程序框架,其應用非常廣泛,如數據挖掘,信息處理或歷史存檔。

盡管 Scrapy 最初設計用于網絡數據采集(web scraping),但它也可用于使用 API(如 Amazon Associates Web Services)提取數據或用作通用的網絡爬蟲。

爬蟲(spider)示例

為了向您展示 Scrapy 帶給您的是什么,我們將使用最簡單的方式運行一個爬蟲,向您展示一個 Scrape Spider 的例子。

這是一個爬蟲的代碼,用于從網站 http://quotes.toscrape.com 中抓取名人名言(famous quotes):

import scrapyclass QuotesSpider(scrapy.Spider):name = "quotes"start_urls = ['http://quotes.toscrape.com/tag/humor/',]def parse(self, response):for quote in response.css('div.quote'):yield {'text': quote.css('span.text::text').extract_first(),'author': quote.xpath('span/small/text()').extract_first(),}next_page = response.css('li.next a::attr("href")').extract_first()if next_page is not None:yield response.follow(next_page, self.parse)

將其放在一個文本文件中,并將其命名為 quotes_spider.py,使用 runspider 命令啟動爬蟲:

scrapy runspider quotes_spider.py -o quotes.json

運行完成后,您將在 quotes.json 文件中看到 JSON 格式化的名人名言列表,包括文本和作者,如下所示(為了獲得更好的可讀性,在這里重新排版了一下):

[{"author": "Jane Austen","text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d" }, {"author": "Groucho Marx","text": "\u201cOutside of a dog, a book is man's best friend. Inside of a dog it's too dark to read.\u201d" }, {"author": "Steve Martin","text": "\u201cA day without sunshine is like, you know, night.\u201d" }, ...]

剛剛發生了什么?

當您運行命令 scrapy runspider quotes_spider.py 時,Scrapy 查找其中的 Spider 定義,并通過抓取引擎運行它。

通過對 start_urls 屬性中定義的 URL(在里,只有一個URL,為標簽(tag)為幽默(humor)的名言)發起請求(making requests)啟動爬蟲,并調用默認的回調方法?parse,參數為響應對象(response)。在 parse 回調方法中,我們使用 CSS 選擇器循環遍歷名言(quote)所在的元素,產生(yield)一個包含名人名言的 Python 字典,然后查找下一頁的鏈接,并使用同樣的回調方法?parse 發起另一個請求。

在這里,您或許注意到了 Scrapy 的主要優點之一:請求和處理是異步的。 這意味著 Scrapy 不需要等待一個請求返回的結果被處理完畢,就可以在此期間發起另一個請求或執行其他操作。 這也意味著即使某些請求失敗了或在處理它時發生錯誤,其他請求仍然可以繼續進行。

雖然這樣可以使您進行非常快速的抓取(以容錯方式同時發起多個請求),Scrapy 也可以讓您通過一些設置來控制爬網的速度。 您可以在每個請求之間設置下載延遲,限制每個域或每個 IP 的并發請求數量,甚至使用自動調節擴展來自動計算這些延遲。

注意

這里使用了?feed exports?來生成 JSON 文件,您可以輕松地更改導出格式(例如,XML 或 CSV)和存儲后臺(例如,FTP 或 Amazon S3)。您還可以編寫一個項目管道(item pipeline)以將項目存儲在數據庫中。

還有什么?

您已經看到如何使用 Scrapy 從網站中提取和存儲數據,但這只是表面的。Scrapy?提供了許多強大的功能使爬取更容易高效,如:

  • 內置支持使用擴展的 CSS 選擇器和 XPath 表達式從 HTML/XML 源代碼中選擇和提取數據,支持正則表達式。
  • 交互式 shell 控制臺(IPython aware)用于嘗試 CSS 和 XPath 表達式來抓取數據,在編寫或調試您的爬蟲時非常有用。
  • 內置支持以多種格式(JSON,CSV,XML)生成 feed exports,并將其存儲在多種后端(FTP,S3,本地文件系統)
  • 強大的編碼支持和自動檢測功能,用于處理多種語言的,非標準的和錯誤的編碼聲明。
  • 強大的可擴展性,允許您使用信號(signals)和良好定義的API(中間件,擴展和管道)插入自己的功能。
  • 廣泛的內置擴展和中間件處理:
    • Cookie 和會話處理
    • HTTP 功能,如壓縮,身份驗證,緩存
    • 用戶代理欺騙
    • robots.txt
    • 爬取深度限制
    • 和更多
  • 一個 Telnet 控制臺,用于掛接到 Scrapy 所在的的 Python 控制臺,以便檢查并調試您的爬蟲
  • 還有其他好處諸如:可復用的從網站地圖和 XML/CSV 文件中抓取網站的爬蟲,自動下載與被抓取項目相關的圖像(或任何其他多媒體)的媒體管道,可緩存的DNS解析器等等!

下一步是什么?

接下來的步驟是安裝 Scrapy,根據教程創建一個完整的 Scrapy 項目并加入社區。 感謝您的關注!

轉載于:https://www.cnblogs.com/-E6-/p/7211025.html

總結

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

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