想要用 python 做爬蟲, 是使用 scrapy框架還是用 requests, bs4 等庫?

時間 2021-05-11 13:54:22

1樓:紫皇是戰神

不太了解scrapy,正好學到bs4。

bs4獲取標籤之間的文字資料:

soup.a.text/string/get_text()text/get_text()--可以獲取某乙個標籤中所有的文字內容string--只可以獲取該標籤下直系的文字內容獲取標籤中屬性值:

soup.a['href']

from bs4 import BeautifulSoupif __name__ == "__main__":

#將本地html文件中的資料載入到該物件中fp = open('./test.html','r',encoding='utf-8')

soup = BeautifulSoup(fp,'lxml')#print(soup)

#print(soup.a)

#print(soup.find('div',class_ = 'song'))

#print(soup.find_all('a'))#層級選擇器 >表示乙個層級,空格表示多個層級print(soup.select('.

tang > ul >li > a')[0])

2樓:

如果只是做一些小任務,根本用不上框架。使用框架頗有殺雞焉用牛刀的感覺。小型任務,使用requests就可以了,正規表示式、xpath選擇器和css選擇器就夠用了;可能是我學藝不精,我甚至都不覺得bs4有什麼妙用。

至於框架,更適合商用、爬整站,如果只是小型應用,還會造成不必要的資源浪費。

3樓:yuanyan54664

第一:scrapy支援python3

第二:用scrapy框架的時候很可能遇到需要重寫方法的情況。對物件導向理解不深的話入門很慢 。

4樓:

我的建議是,如果你從沒有過分析原始碼的經驗,選擇使用最廣泛的框架 - scrapy;如果你沒有寫過乙個完整專案的經驗,選擇使用最廣泛的框架;如果你對是個完全的新手,不要來知乎提問題;如果對 Python 有簡單的使用經驗,選擇乙個比 Scrapy 更輕量級、更簡單的框架。

網上經常有這樣的提問,初學某種語言/初入某個領域,是否應該使用框架?下面會有很多這樣的回答,不要使用框架,這樣不利於你學你其中的原理balabala... 你應該嘗試自己搭建乙個框架,再看看某些優秀的原始碼balabala...

這種「學習正確」充斥網路,可這種「正確」的回答是否有設身處地為提問者想一想呢。我個人的學習過程是,我是新手,我就去找 tutorial;我有需求,我就選用框架;我用得熟練,並且框架有不能滿足我的時候,我就去改造框架... 當然,閱讀優秀專案原始碼,從零搭建框架等對每個人都是幫助巨大的,但同時也是極其消耗時間與精力的,並不適合所有人。

我現在可以去讀作業系統原始碼,我也相信我能拿得下,但這之後它對我的幫助是否有其它更緊迫的/並不緊迫的事情幫助更大呢?人生中很多選擇也是如此,當然,這是另外乙個話題了。

5樓:貓在大神旁的小C

分情況如果緊急任務量不大,建議requests庫,簡單方便好除錯

如果資料量大,需要多台機器爬取資料,建議走分布式爬蟲,採用框架scrapy,這樣效率會高,日誌,併發都自帶,減小開發難度

6樓:Xtreme

我是這樣的。

想隨手爬一些東西就用 requests 然後用 re或者 xpath 提取資料再儲存到 csv 。

大約幾十行就能爬一些簡單的資料。

大專案用scrapy吧,方便。

7樓:chugle lee

很多人說先不要用框架,熟悉了相關庫再用框架。但是作為使用者。拿來主義更加重要。不然用什麼Python?

對於未接觸過相關框架的使用者,稍微熟悉下幾個http庫有必要,對於用過django.之類框架的有經驗使用者,直接scrapy 好了!

8樓:徐昊旻

入門用requests或者urllib,畢竟除錯起來方便,可以一行一行除錯,看看執行結果,容易讓你入門。

等你有更高的需求,比如爬的深度比較深,有高併發需求,或者要面向資料庫再去學scrapy。

另,scrapy支援python3的,還有就是request是實現不了scrapy的,等你學到非同步就明白了。你可以試著用aiohttp實現scrapy,這是乙個大坑。

9樓:Angry Bugs

不知道樓主水平如何,冒昧答一下。

參考這裡:Scrapy原始碼分析(一)架構概覽 (不是我部落格)爬蟲基本原理很簡單,不用侷限於 scrapy。無非是乙個有向圖的遍歷。

對想爬些資料這種需求來說,效能一般不是問題,要防止的主要是封禁方面的問題。對於搜尋引擎級的爬取,更是要從頭設計排程策略,scrapy 也幫不上什麼忙,只能是礙手礙腳。

參考這裡:爬蟲的基本框架 - ospider - 部落格園為什麼不建議使用 Scrapy 的詳細原因:為什麼不使用 scrapy,而是從頭編寫爬蟲系統?

10樓:Leonardo

一般來說呢建議先用request bs4之類的寫乙個爬蟲當作入門級別主要是弄明白資料的傳輸如(post和get)還有基本的網頁解析和資料提取過程

然後寫了五六個之後想要提公升速度可以直接嘗試scrapy 但只能一步步看官方文件別無他法遇到不懂google或者stackoverflow 祝好

11樓:李皮筋

看你使用場景。

如果你的爬蟲是玩玩,練練手。或者是對某一站點請求併發量不大的時候,可以用scrapy。

如果你的爬蟲對某一站點請求很頻繁,量很大時,我傾向於使用requests bs re。

爬蟲的業務邏輯很簡單。重點是反爬!反爬!反爬!

scrapy優勢在於抽象了業務,讓你通過配置你需要的資料格式,幫你快速獲取結果。這在請求量很小的時候還算方便,但當請求量一大起來,必然會遇到反爬機制各種封你,對於反爬scrapy沒提供特別有效的處理機制。

另外往往獲取有效資料的操作,用BeautifulSoup+re就搞定了,而為了使用scrapy不得不配置的一堆東西反倒顯得繁瑣了。

既然所有反爬的處理都需要自己弄,這樣看來scrapy的優勢其實已經很小了,所以我建議requests bs re做。

為什麼爬蟲非要用python?用C語言 C C 或者java不行嗎?

輪子決定語言熱門度,最近我用php做爬蟲,發現b站連php和xpath結合使用的教程都沒有,只有在網上找到零散的幾篇文字教程,入門教程都沒有這還怎麼學爬,最後自己還是鼓搗出來了,提取資料,查詢本方資料庫,重新生成頁面. 圓胖腫 我曾經用vert.x的web client做過爬蟲真的是很方便,可能是我...

有什麼是 Python 可以做,但是 PHP 不可以做的?

2gua 其實 X 語言能做,Y 語言做不到 這條對任何程式語言都成立。而題主獨獨拿 PHP 說事,其心可誅。反過來比如 Python 能丟掉游標卡尺嗎?這些問題都沒意思,而且出發點很壞。 已登出 我舉個 psr 0 和 psr 4 的坑,如果你只靠 autoloader 的話,你沒有辦法 use ...

做前端是用C好還是Python好

染念 首先任何程式語言都能寫,只是效率問題。所以如果不覺得麻煩的,可以自己試試。或者使用前人積累下來,適合寫前端的語言。但是這麼說,感覺題主並沒有了解基礎的前端知識,建議先了解再看看是不是選擇。 oOo 首先排除 c,太麻煩了,Python 可以寫 GUI,比如 QT 之類的,不過個人認為寫出來的東...