當前位置:首頁 » 編程語言 » python寫爬蟲

python寫爬蟲

發布時間: 2022-01-08 08:44:57

python學多久可以寫爬蟲

爬蟲本身很簡單,用不了一個小時就能從不知道到寫出來簡單的爬蟲程序,
但是爬蟲程序要覆蓋很多不同情況的需求的,要具體問題具體看了。

❷ 剛開始學習 Python 到可以寫出一個爬蟲大約需要多長時間

學習 Python 的三種境界

前言
王國維在《人間詞話》中將讀書分為了三種境界:「古今之成大事業、大學問者,必經過三種之境界:『昨夜西風凋碧樹,獨上高樓,望盡天涯路』。此第一境也。『衣帶漸寬終不悔,為伊消得人憔悴。』此第二境也。『眾里尋他千網路,驀然回首,那人卻在燈火闌珊處』。此第三境也。我從入門Python到現在也沒有多少時間,所以寫如此大的一個題目必定會引發各種批判,當然我沒有想造一個大新聞,只是想根據自己的學習歷程做一個簡單的總結,同時將這三個階段對應的一些好的書籍簡單介紹介紹。



正文
Python的用途十分廣泛,不同的程序員將其用於不用的領域,不同的程序員將自己的代碼打包成庫,供其他程序員使用,從而少造輪子,各種庫的使用,加之Python本身的靈活性、易讀性,易寫性,使用的人越來越多,tiobe統計編程語言的使用率如下:Python在一年之間使用排行榜中上升了3名,而且各大公司在招聘員工的時候如果能掌握Python,肯定是一個加分項,因為Python在文本處理,小程序的寫作方面具有太強的優勢,前段時間一個朋友讓幫忙改下他們公司logo的顏色,第一個想到的就是用Python,女票讓我幫她預處理大數據,第一個想到的仍然是Python等等,當然並沒有說其他語言不好,也不是為了討論哪種語言更好,只是Python確實是一門會讓人幸福的語言,下面粗淺的說說我對Python學習過程中的境界劃分以及推薦書籍。



  • 第一個階段:初級,掌握Python的語法和一些常用庫的使用

這里首先推薦在騰訊官方課程平台上進行直播學習,有號就能無償一直學,每天晚上都是高清直播(企鵝球球:1129中間是834最後加上這個903連在一起就可以了),除此之外基於python2.7在網上的書籍適合於重頭開始一直讀完,作為一個開發人員,除了基本的語法,這本書裡面提到了一些其他的常用的庫,看了廖老師寫的很多東西,感覺他的思路,以及寫博客寫書的高度,概括性,原理性都十分好,這本書讀完之後,相信就可以動手寫很多東西了,可以盡情的玩轉Python解釋器了。

另外還有一本書《Python參考手冊》,這本書也十分的有用,關於Python的方方面面基本都囊括在內,可以作為一本Python字典來查詢使用方法,十分好用。

掌握一門語言最好的方法就是用它,所以我覺得邊學語法邊刷Leetcode是掌握Python最快的方式之一。

很多隻需要將Python作為腳本或者就是寫一些小程序處理處理文本的話,到這一個階段就足夠了,這個階段已經可以幫我們完成很多很多的事情了。但是如果是一個專業學習Python的,恐怕還需要努力的升級:首先,國內的大多數人都是學習了其他語言(C,C++,java等)之後來學習Python的,所以Python和這些語言的不同,也就是pythonic的東西需要一些時間去學習了解和掌握;另外,對於自己領域的領域的庫構架的掌握也需要很長的時間去掌握;最後,如果想獨立完成一個Python的項目,項目的布局,發布,開源等都是需要考慮的問題。

  • 第二個階段:中級,掌握自己特定領域的庫,掌握pythonic寫法,非常熟悉Python的特性

推薦的第一本書是《編寫高質量代碼–改善python程序的91個建議》,這本書大概的提了下Python工程的文件布局,更多的總結了如何寫出pythonic的代碼,另外,也介紹了一些常用的庫。

要想深入的了解Python,有的時候看看Python的源碼也是很重要的,自己通過讀懂源碼,來徹底的了解Python的核心機制,這里推薦《Python源碼剖析——深度探索動態語言核心技術》,這本書並沒有看完,只是在需要深入了解Python某個功能或者數據結構的時候看看相關章節,也覺得受益匪淺。

自己領域的書籍和資料也肯定很多,比如web開發的構架都有很多,只有了解熟悉了所有構架,在選擇的時候才能衡量利弊,然後深入掌握某些構架。

這個階段過後,可以寫出pythonic代碼,可以通過PEP8的檢查,可以為開源社區做貢獻了,可以將一個Python文件寫的十分好,但是如果要用Python開發一個大型項目,還是有很多東西需要掌握的,比如項目的文檔,項目的發布,下載,項目性能和案例等等。

  • 第三個階段:高級,從整個工程項目著眼,考慮document,distribution,性能優化等

目前只看了一本書《the hacker guide to python》,看的是英文版的,這本書對項目的布局,文檔,性能,發布等做了很多詳細的介紹,我覺得寫的還是很不錯,只不過本人還需要再讀幾遍。

對於大多數人來說,很難有機會從頭開始一個有意義的大型工程項目,所以自己可以用Python實現一些簡單的功能,簡單的項目,這個靈感可以去知乎或者quora搜索,很多前輩都分享了自己的經驗。

從大局入手,規劃好項目的布局,設定好相應的文檔說明,提供工程下載安裝的方法,帶幾個demo,每個類,每個函數,每行代碼都反復推敲,寫出pythonic的程序,相信這時候Python於我們便是信手拈來了!


總結


本文只是我認為的學習Python的三種境界,以我粗淺之眼光,肯定有太多太多的不足,而且自己也就是一個介於初級和高級Python程序員的水平,寫這個文章,也算是給自己設立的一個目標吧。




❸ 如何利用python寫爬蟲程序

利用python寫爬蟲程序的方法:

1、先分析網站內容,紅色部分即是網站文章內容div。

❹ 爬蟲是Python寫的嗎

爬蟲是一種程序,是模擬人訪問網頁的
爬蟲可以用任何語言編寫。現在用Python寫爬蟲比較方便,但不一定必須用他

❺ 如何利用python寫出爬蟲

你好,學習Python編程語言,是大家走入編程世界的最理想選擇。Python比其它編程語言更適合人工智慧這個領域,在人工智慧上使用Python比其它編程有更大優勢。你可以到我們學院官網,有Python視頻教程。無論是學習任何一門語言,基礎知識,就是基礎功非常的重要,找一個有豐富編程經驗的老師或者師兄帶著你會少走很多彎路, 你的進步速度也會快很多,無論我們學習的目的是什麼,不得不說Python真的是一門值得你付出時間去學習的優秀編程語言。在選擇培訓時一定要多方面對比教學,師資,項目,就業等,慎重選擇。

❻ 如何用python寫爬蟲 知乎

學習

基本的爬蟲工作原理
基本的http抓取工具,scrapy
Bloom Filter: Bloom Filters by Example
如果需要大規模網頁抓取,你需要學習分布式爬蟲的概念。其實沒那麼玄乎,你只要學會怎樣維護一個所有集群機器能夠有效分享的分布式隊列就好。最簡單的實現是python-rq: https://github.com/nvie/rq
rq和Scrapy的結合:darkrho/scrapy-redis · GitHub
後續處理,網頁析取(grangier/python-goose · GitHub),存儲(Mongodb)

❼ 如何用Python做爬蟲

在我們日常上網瀏覽網頁的時候,經常會看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來做桌面壁紙,或者用來做設計的素材。

我們最常規的做法就是通過滑鼠右鍵,選擇另存為。但有些圖片滑鼠右鍵的時候並沒有另存為選項,還有辦法就通過就是通過截圖工具截取下來,但這樣就降低圖片的清晰度。好吧其實你很厲害的,右鍵查看頁面源代碼。

我們可以通過python來實現這樣一個簡單的爬蟲功能,把我們想要的代碼爬取到本地。下面就看看如何使用python來實現這樣一個功能。

❽ 如何用python寫出爬蟲

先檢查是否有API

API是網站官方提供的數據介面,如果通過調用API採集數據,則相當於在網站允許的范圍內採集,這樣既不會有道德法律風險,也沒有網站故意設置的障礙;不過調用API介面的訪問則處於網站的控制中,網站可以用來收費,可以用來限制訪問上限等。整體來看,如果數據採集的需求並不是很獨特,那麼有API則應優先採用調用API的方式。

數據結構分析和數據存儲

爬蟲需求要十分清晰,具體表現為需要哪些欄位,這些欄位可以是網頁上現有的,也可以是根據網頁上現有的欄位進一步計算的,這些欄位如何構建表,多張表如何連接等。值得一提的是,確定欄位環節,不要只看少量的網頁,因為單個網頁可以缺少別的同類網頁的欄位,這既有可能是由於網站的問題,也可能是用戶行為的差異,只有多觀察一些網頁才能綜合抽象出具有普適性的關鍵欄位——這並不是幾分鍾看幾個網頁就可以決定的簡單事情,如果遇上了那種臃腫、混亂的網站,可能坑非常多。

對於大規模爬蟲,除了本身要採集的數據外,其他重要的中間數據(比如頁面Id或者url)也建議存儲下來,這樣可以不必每次重新爬取id。

資料庫並沒有固定的選擇,本質仍是將Python里的數據寫到庫里,可以選擇關系型資料庫Mysql等,也可以選擇非關系型資料庫MongoDB等;對於普通的結構化數據一般存在關系型資料庫即可。sqlalchemy是一個成熟好用的資料庫連接框架,其引擎可與Pandas配套使用,把數據處理和數據存儲連接起來,一氣呵成。

數據流分析

對於要批量爬取的網頁,往上一層,看它的入口在哪裡;這個是根據採集范圍來確定入口,比如若只想爬一個地區的數據,那從該地區的主頁切入即可;但若想爬全國數據,則應更往上一層,從全國的入口切入。一般的網站網頁都以樹狀結構為主,找到切入點作為根節點一層層往裡進入即可。

值得注意的一點是,一般網站都不會直接把全量的數據做成列表給你一頁頁往下翻直到遍歷完數據,比如鏈家上面很清楚地寫著有24587套二手房,但是它只給100頁,每頁30個,如果直接這么切入只能訪問3000個,遠遠低於真實數據量;因此先切片,再整合的數據思維可以獲得更大的數據量。顯然100頁是系統設定,只要超過300個就只顯示100頁,因此可以通過其他的篩選條件不斷細分,只到篩選結果小於等於300頁就表示該條件下沒有缺漏;最後把各種條件下的篩選結果集合在一起,就能夠盡可能地還原真實數據量。

明確了大規模爬蟲的數據流動機制,下一步就是針對單個網頁進行解析,然後把這個模式復制到整體。對於單個網頁,採用抓包工具可以查看它的請求方式,是get還是post,有沒有提交表單,欲採集的數據是寫入源代碼里還是通過AJAX調用JSON數據。

同樣的道理,不能只看一個頁面,要觀察多個頁面,因為批量爬蟲要弄清這些大量頁面url以及參數的規律,以便可以自動構造;有的網站的url以及關鍵參數是加密的,這樣就悲劇了,不能靠著明顯的邏輯直接構造,這種情況下要批量爬蟲,要麼找到它加密的js代碼,在爬蟲代碼上加入從明文到密碼的加密過程;要麼採用下文所述的模擬瀏覽器的方式。

數據採集

之前用R做爬蟲,不要笑,R的確可以做爬蟲工作;但在爬蟲方面,Python顯然優勢更明顯,受眾更廣,這得益於其成熟的爬蟲框架,以及其他的在計算機系統上更好的性能。scrapy是一個成熟的爬蟲框架,直接往裡套用就好,比較適合新手學習;requests是一個比原生的urllib包更簡潔強大的包,適合作定製化的爬蟲功能。requests主要提供一個基本訪問功能,把網頁的源代碼給download下來。一般而言,只要加上跟瀏覽器同樣的Requests Headers參數,就可以正常訪問,status_code為200,並成功得到網頁源代碼;但是也有某些反爬蟲較為嚴格的網站,這么直接訪問會被禁止;或者說status為200也不會返回正常的網頁源碼,而是要求寫驗證碼的js腳本等。

下載到了源碼之後,如果數據就在源碼中,這種情況是最簡單的,這就表示已經成功獲取到了數據,剩下的無非就是數據提取、清洗、入庫。但若網頁上有,然而源代碼里沒有的,就表示數據寫在其他地方,一般而言是通過AJAX非同步載入JSON數據,從XHR中找即可找到;如果這樣還找不到,那就需要去解析js腳本了。

解析工具

源碼下載後,就是解析數據了,常用的有兩種方法,一種是用BeautifulSoup對樹狀HTML進行解析,另一種是通過正則表達式從文本中抽取數據。

BeautifulSoup比較簡單,支持Xpath和CSSSelector兩種途徑,而且像Chrome這類瀏覽器一般都已經把各個結點的Xpath或者CSSSelector標記好了,直接復制即可。以CSSSelector為例,可以選擇tag、id、class等多種方式進行定位選擇,如果有id建議選id,因為根據HTML語法,一個id只能綁定一個標簽。

正則表達式很強大,但構造起來有點復雜,需要專門去學習。因為下載下來的源碼格式就是字元串,所以正則表達式可以大顯身手,而且處理速度很快。

對於HTML結構固定,即同樣的欄位處tag、id和class名稱都相同,採用BeautifulSoup解析是一種簡單高效的方案,但有的網站混亂,同樣的數據在不同頁面間HTML結構不同,這種情況下BeautifulSoup就不太好使;如果數據本身格式固定,則用正則表達式更方便。比如以下的例子,這兩個都是深圳地區某個地方的經度,但一個頁面的class是long,一個頁面的class是longitude,根據class來選擇就沒辦法同時滿足2個,但只要注意到深圳地區的經度都是介於113到114之間的浮點數,就可以通過正則表達式"11[3-4].\d+"來使兩個都滿足。

數據整理

一般而言,爬下來的原始數據都不是清潔的,所以在入庫前要先整理;由於大部分都是字元串,所以主要也就是字元串的處理方式了。

字元串自帶的方法可以滿足大部分簡單的處理需求,比如strip可以去掉首尾不需要的字元或者換行符等,replace可以將指定部分替換成需要的部分,split可以在指定部分分割然後截取一部分。

如果字元串處理的需求太復雜以致常規的字元串處理方法不好解決,那就要請出正則表達式這個大殺器。

Pandas是Python中常用的數據處理模塊,雖然作為一個從R轉過來的人一直覺得這個模仿R的包實在是太難用了。Pandas不僅可以進行向量化處理、篩選、分組、計算,還能夠整合成DataFrame,將採集的數據整合成一張表,呈現最終的存儲效果。

寫入資料庫

如果只是中小規模的爬蟲,可以把最後的爬蟲結果匯合成一張表,最後導出成一張表格以便後續使用;但對於表數量多、單張表容量大的大規模爬蟲,再導出成一堆零散的表就不合適了,肯定還是要放在資料庫中,既方便存儲,也方便進一步整理。

寫入資料庫有兩種方法,一種是通過Pandas的DataFrame自帶的to_sql方法,好處是自動建表,對於對表結構沒有嚴格要求的情況下可以採用這種方式,不過值得一提的是,如果是多行的DataFrame可以直接插入不加索引,但若只有一行就要加索引否則報錯,雖然這個認為不太合理;另一種是利用資料庫引擎來執行SQL語句,這種情況下要先自己建表,雖然多了一步,但是表結構完全是自己控制之下。Pandas與SQL都可以用來建表、整理數據,結合起來使用效率更高。

❾ 用python寫一個爬蟲有多難

簡單一個爬蟲,可以用urllib,requests,beautifulsoup可以實現。

比如爬網路首頁,

importrequests
r=requests.get("http://www..com")#訪問網路主頁
r.encoding='utf-8'更改編碼為utf-8
print(r.text[:1000])#列印網頁內容,這里控制列印出來的字元數量,以免idle假死。

以上是簡單的爬蟲,難度往上就是,採集多頁內容,指定採集一些url結構的內容,登錄採集(直線——驗證碼,post get),採集javascript生成的內容,採集雪球網頁。等等。

驗證碼這部分,現在比較多的是極驗,也就是拉動拼圖到一定位置,然後放開滑鼠,拼合拼圖的那種驗證碼。這種驗證碼目前也沒幾個人能破解。

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:56
php全形半形 發布:2024-12-23 14:55:17 瀏覽:829
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:733
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:830
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:711
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:279
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:661
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:420
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:820