還在焦頭爛額裸寫Scrapy?這個神器讓你90秒內配好一個爬蟲

      網友投稿 1099 2025-04-01

      背景


      爬蟲是一件有趣的事情,讓你可以通過爬蟲程序自動化的將網上的信息抓取下來,免去了很多人工操作。在一些優質爬蟲框架出來之前,開發者們還是通過簡單的網絡請求+網頁解析器的方式來開發爬蟲程序,例如 Python 的 requests + BeautifulSoup,高級一點的爬蟲程序還會加入數據儲存的模塊,例如 MySQL、MongoDB。這種方式開發效率低,穩定性不佳,要開發好一個完備的、生產可用的爬蟲可能需要好幾個小時。我將這種方式稱作 非框架爬蟲。

      2011 年,基于 Twisted 編寫的 scrapy 爬蟲框架橫空出世,突然被大眾熟知,成為了首屈一指的全能的高性能爬蟲異步框架。scrapy 抽象出了幾個核心模塊,讓開發者將主要注意力放在爬蟲抓取邏輯上,而不用管數據下載、頁面解析、任務調度等比較繁瑣的模塊。開發好一個生產可用的 Scrapy 爬蟲,簡單的可能只需要十幾分鐘,復雜的可能需要 1 小時以上。當然,我們還有其他很多優秀框架,例如 PySpider、Colly 等。我將這種爬蟲稱作 框架爬蟲。框架爬蟲解放了生產力,現在很多企業將框架爬蟲改造后應用在生產環境中,大規模抓取數據。

      然而,對于需要抓成百上千個網站的爬蟲需求來說,框架爬蟲可能就有些心有余而力不足了,編寫爬蟲成了體力活。例如,如果平均開發一個框架爬蟲需要 20 分鐘,如果一個全職爬蟲開發工程師每天工作 8 個小時,那么開發 1000 個網站就需要 20000 分鐘,333 個小時,42 個工作日,近 2 個月。當然,我們可以雇傭 10 個全職爬蟲開發工程師,但這同樣需要 4 個工作日才能完成(如下圖)。

      這同樣是比較低效的。為了克服這個效率問題,可配置爬蟲 應運而生。

      可配置爬蟲介紹

      可配置爬蟲(Configurable Spider) 正如其名字表示的,就是可以配置抓取規則的爬蟲。可配置爬蟲是一種高度抽象的爬蟲程序,開發人員不用編寫爬蟲代碼,只需要將需要抓取網頁地址、字段、屬性寫在配置文件或數據庫中,讓特殊的爬蟲程序根據配置去抓取數據。可配置爬蟲將爬蟲代碼進一步抽象成了配置信息,簡化了爬蟲開發的流程。爬蟲開發者只需要做相應的配置就可以完成爬蟲的開發。因此,開發者可以通過可配置爬蟲,大規模的編寫爬蟲程序(如下圖)。

      這樣的方式讓抓取成百上千的網站成了可能,一個熟練的爬蟲配置員一天可以配置 1000 個新聞網站的爬蟲。這對于有輿情監控需求的企業來說非常重要,因為可配置爬蟲提高了生產力,讓單位工作時間成本降低,提升了開發效率,方便后續的輿情分析和人工智能產品開發。很多企業都是自己研發的可配置爬蟲(可能叫法會有些不一樣,但實質是一個東西),然后雇傭一些爬蟲配置員專門負責配置爬蟲。

      市面上免費開源的可配置爬蟲框架并不多。比較早的有微軟大神崔慶才開發的 Gerapy,屬于一個爬蟲管理平臺,能夠根據配置規則生成 Scrapy 項目文件。另一個比較新的可配置爬蟲框架是 Crawlab(其實 Crawlab 不是可配置爬蟲框架,而是一個靈活度很高的爬蟲管理平臺),在 v0.4.0 中發布了可配置爬蟲。另外還有一個基于 Golang 的開源框架 Ferret ,很有意思,編寫爬蟲跟寫 SQL 一樣簡單。其他還有一些商業產品,但據用戶反饋后都覺得專業度不高,不能滿足生產需求。

      可配置爬蟲的誕生,主要是爬蟲的模式比較單一,無非就是列表頁+詳情頁的組合(如下圖),或者僅僅列表頁。當然還有稍微復雜一點的通用爬蟲,這些也可以通過規則配置來完成。

      Crawlab 可配置爬蟲

      我們今天主要介紹的是 Crawlab 的可配置爬蟲。我們之前在 這篇文章 中有所介紹,但并沒有深入講解如何應用到實戰中。今天,我們著重講解一下。如果對 Crawlabb 的可配置爬蟲比較陌生,請參考可配置爬蟲的 文檔。

      可配置爬蟲實戰

      百度(搜索 "Crawlab")

      爬蟲地址:http://crawlab.cn/demo#/spiders/5e27d055b8f9c90019f42a83

      version:?0.4.4

      engine:?scrapy

      start_url:?http://www.baidu.com/s?wd=crawlab

      start_stage:?list

      stages:

      -?name:?list

      is_list:?true

      list_css:?""

      list_xpath:?//*[contains(@class,?"c-container")]

      page_css:?""

      page_xpath:?//*[@id="page"]//a[@class="n"][last()]

      page_attr:?href

      fields:

      -?name:?title

      css:?""

      xpath:?.//h3/a

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?url

      css:?""

      xpath:?.//h3/a

      attr:?href

      next_stage:?""

      remark:?""

      -?name:?abstract

      css:?""

      xpath:?.//*[@class="c-abstract"]

      attr:?""

      next_stage:?""

      remark:?""

      settings:

      ROBOTSTXT_OBEY:?"false"

      USER_AGENT:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_6)?AppleWebKit/537.36?(KHTML,

      like?Gecko)?Chrome/78.0.3904.108?Safari/537.36

      SegmentFault(最新文章)

      爬蟲地址:http://crawlab.cn/demo#/spiders/5e27d116b8f9c90019f42a87

      version:?0.4.4

      engine:?scrapy

      start_url:?https://segmentfault.com/newest

      start_stage:?list

      stages:

      -?name:?list

      is_list:?true

      list_css:?.news-list?>?.news-item

      list_xpath:?""

      page_css:?""

      page_xpath:?""

      page_attr:?""

      fields:

      -?name:?title

      css:?h4.news__item-title

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?url

      css:?.news-img

      xpath:?""

      attr:?href

      next_stage:?""

      remark:?""

      -?name:?abstract

      css:?.article-excerpt

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      settings:

      ROBOTSTXT_OBEY:?"false"

      USER_AGENT:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_6)?AppleWebKit/537.36?(KHTML,

      like?Gecko)?Chrome/78.0.3904.108?Safari/537.36

      亞馬遜中國(搜索"手機")

      爬蟲地址:http://crawlab.cn/demo#/spiders/5e27e157b8f9c90019f42afb

      version:?0.4.4

      engine:?scrapy

      start_url:?https://www.amazon.cn/s?k=%E6%89%8B%E6%9C%BA&__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&ref=nb_sb_noss_2

      start_stage:?list

      stages:

      -?name:?list

      is_list:?true

      list_css:?.s-result-item

      list_xpath:?""

      page_css:?.a-last?>?a

      page_xpath:?""

      page_attr:?href

      fields:

      -?name:?title

      css:?span.a-text-normal

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?url

      css:?.a-link-normal

      xpath:?""

      attr:?href

      next_stage:?""

      remark:?""

      -?name:?price

      css:?""

      xpath:?.//*[@class="a-price-whole"]

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?price_fraction

      css:?""

      xpath:?.//*[@class="a-price-fraction"]

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?img

      css:?.s-image-square-aspect?>?img

      xpath:?""

      attr:?src

      next_stage:?""

      remark:?""

      settings:

      ROBOTSTXT_OBEY:?"false"

      USER_AGENT:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_6)?AppleWebKit/537.36?(KHTML,

      like?Gecko)?Chrome/78.0.3904.108?Safari/537.36

      V2ex

      爬蟲地址:http://crawlab.cn/demo#/spiders/5e27dd67b8f9c90019f42ad9

      version:?0.4.4

      engine:?scrapy

      start_url:?https://v2ex.com/

      start_stage:?list

      stages:

      -?name:?list

      is_list:?true

      list_css:?.cell.item

      list_xpath:?""

      page_css:?""

      page_xpath:?""

      page_attr:?href

      fields:

      -?name:?title

      css:?a.topic-link

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?url

      css:?a.topic-link

      xpath:?""

      attr:?href

      next_stage:?detail

      remark:?""

      -?name:?replies

      css:?.count_livid

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?detail

      is_list:?false

      list_css:?""

      list_xpath:?""

      page_css:?""

      page_xpath:?""

      page_attr:?""

      fields:

      -?name:?content

      css:?""

      xpath:?.//*[@class="markdown_body"]

      attr:?""

      next_stage:?""

      remark:?""

      settings:

      AUTOTHROTTLE_ENABLED:?"true"

      ROBOTSTXT_OBEY:?"false"

      USER_AGENT:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_6)?AppleWebKit/537.36?(KHTML,

      like?Gecko)?Chrome/79.0.3945.117?Safari/537.36

      36氪

      爬蟲地址:http://crawlab.cn/demo#/spiders/5e27ec82b8f9c90019f42b59

      version:?0.4.4

      engine:?scrapy

      start_url:?https://36kr.com/information/web_news

      start_stage:?list

      stages:

      -?name:?list

      is_list:?true

      list_css:?.kr-flow-article-item

      list_xpath:?""

      page_css:?""

      page_xpath:?""

      page_attr:?""

      fields:

      -?name:?title

      css:?.article-item-title

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?url

      css:?body

      xpath:?""

      attr:?href

      next_stage:?detail

      remark:?""

      -?name:?abstract

      css:?body

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?author

      css:?.kr-flow-bar-author

      xpath:?""

      attr:?""

      next_stage:?""

      remark:?""

      -?name:?time

      css:?.kr-flow-bar-time

      xpath:?""

      attr:?""

      next_stage:?""

      還在焦頭爛額裸寫Scrapy?這個神器讓你90秒內配好一個爬蟲

      remark:?""

      -?name:?detail

      is_list:?false

      list_css:?""

      list_xpath:?""

      page_css:?""

      page_xpath:?""

      page_attr:?""

      fields:

      -?name:?content

      css:?""

      xpath:?.//*[@class="common-width?content?articleDetailContent?kr-rich-text-wrapper"]

      attr:?""

      next_stage:?""

      remark:?""

      settings:

      ROBOTSTXT_OBEY:?"false"

      USER_AGENT:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_6)?AppleWebKit/537.36?(KHTML,

      like?Gecko)?Chrome/78.0.3904.108?Safari/537.36

      實戰爬蟲一覽

      總結

      要注意的是,不遵守 robots.txt 可能會造成法律風險,本文的實戰爬蟲均為學習交流用,切勿作為生產環境,任何濫用者自行承擔法律責任。

      參考

      Github: https://github.com/crawlab-team/crawlab

      Demo: http://crawlab.cn/demo

      文檔: http://docs.crawlab.cn/

      Go Scrapy Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel復制表格公式的方法(Excel表格怎么復制公式)
      下一篇:Spark內核詳解 (6) | Spark Shuffle 解析
      相關文章
      久久久久亚洲AV无码专区网站 | 亚洲AV网站在线观看| 亚洲精品国产肉丝袜久久| 亚洲夜夜欢A∨一区二区三区| 亚洲丰满熟女一区二区哦| 最新国产成人亚洲精品影院| 亚洲无人区视频大全| 亚洲国产视频网站| 亚洲成a人片在线观看中文!!!| 亚洲视频在线观看地址| 91亚洲国产成人久久精品| 亚洲日韩国产精品无码av| 亚洲人成综合在线播放| 亚洲一级毛片在线播放| 亚洲一区二区三区在线| 亚洲精品免费网站| 亚洲国产精品无码第一区二区三区| 亚洲乱亚洲乱妇24p| 亚洲AV日韩AV一区二区三曲| 国产成人亚洲综合a∨| 亚洲Aⅴ无码一区二区二三区软件| 亚洲黄黄黄网站在线观看| 久久久久亚洲AV无码专区桃色| 亚洲乱码精品久久久久..| 国产精品亚洲精品日韩已满| 国产精品亚洲A∨天堂不卡| 久久精品亚洲一区二区| 亚洲精品国产福利在线观看| 亚洲午夜电影一区二区三区| 亚洲熟妇少妇任你躁在线观看| 亚洲av永久中文无码精品| 亚洲人午夜射精精品日韩| 亚洲人成精品久久久久| 国产精品亚洲一区二区三区在线 | 国产亚洲精品a在线无码| 亚洲无线电影官网| 亚洲一级毛片在线观| 亚洲av无码一区二区三区四区| 亚洲区小说区图片区| 亚洲AV日韩AV高潮无码专区| 亚洲精品一区二区三区四区乱码|