- N +

python最簡單的小爬蟲 python爬蟲入門教程(非常詳細)

很多朋友對于python最簡單的小爬蟲和python爬蟲入門教程(非常詳細)不太懂,今天就由小編來為大家分享,希望可以幫助到大家,下面一起來看看吧!

用爬蟲技術能做到哪些有趣的事情

什么是網絡爬蟲?

網絡爬蟲也叫網絡蜘蛛,即WebSpider,名字也是非常之形象。

如果把互聯網比喻成一個蜘蛛網,那么Spider就是在網上爬來爬去的蜘蛛。網絡蜘蛛通過網頁的鏈接地址來尋找網頁,從網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網頁,一直循環下去,直到把整個網站所有的網頁都抓取完為止。如果把整個互聯網就當成一個網站,那么網絡蜘蛛可以用這個原理把互聯網上所有的網頁都抓取下來。光是聽起來就很有意思,那利用這等技術能做些什么好玩的事兒呢?大家感受下~~

(1)之前在北京買房,誰想房價開始瘋長,鏈家的房價等數據分析只給了一小部分,遠遠不能滿足自己的需求。于是晚上花了幾個小時的時間寫了個爬蟲,爬下了北京所有的小區信息及北京所有小區的所有歷史成交記錄。

(2)上次發現AndroidQQ和iOSQQ可以顯示網絡狀態(2G/WiFi)之后,突然想到,這樣子好像可以監視某人的出行和作息規律。簡單的來說,在家里或者工作的地方,一般是有WiFi的,然后出門了,WiFi就斷掉了。如果監測頻率足夠頻繁,那么結合一定的推理,可以大致推測出一個人的行動。如果長期監視,那么可以大致推出一個人的作息時間。因為只有AndroidQQ和iOSQQ有這個功能,所以要得到一個人的網絡狀態比較麻煩。我的做法是跑Android模擬器。然后用按鍵精靈模擬,并把網絡狀態截圖,用curlpost到服務器上。服務器會把每次發送的時間、截圖保存下來。因為是用程序截圖的,所以只要網絡狀態是一樣的,那么截圖就是一樣的,這樣服務器就只會保存2~3張圖片而已,其余的發現是相同的圖片,數據庫做個標記就好了。然后人工做OCR,還是注意到只有2~3張圖片,所以工作量很少。得到數據后,要做各種統計就可以自己搞了……

(3)在用Python寫網頁爬蟲之前,我只用來寫過了一個駕校約車的腳本,讓當時的我不懼上萬的學車同僚,在約車環節沒有輸在起跑線上。接著那段時間,我女朋友的領導每天下班都會下任務,要收集100條有招聘需求的信息,第二天檢查??吹剿疽拱俣?復制粘貼到半夜,心疼死了。想到了某個牛人說:一切重復性的工作都可以用程序來完成。于是偷偷花了些時間研究了下她經常查的某些同類業務網站的頁面數據,培育了這只爬蟲。主要技能就是爬這些網站的招聘公司信息及聯系方式,保存到Excel中。在我將戰斗成果----1000多個客戶資料的Excel表格發給她的時候,先驚喜,后審問,再感慨!依稀記得那天她發了一條朋友圈,內容是:“有個程序員男朋友,感覺好幸福?。。 背删透凶咧本€啊,都能讓她感到幸福,你說這只爬蟲是不是做了很酷很有趣的事情呢?

(4)我用爬蟲爬了我愛白菜網、超值分享匯、發現值得買、惠惠購物、今日聚超值、留住你、買手黨、沒得比、慢慢買、牛雜網、買個便宜貨、什么值得買、天上掉餡餅、一分網、折800值得買、值值值等網站的折扣信息。

(5)大二學生一枚,前段時間中期考試,成績一直不出來,又不想每次都登錄,突然就像用以下所學的東西來干點事情。說干就干,花了我將近4個小時完成成績提醒功能。主要是用Python定時抓取數據(定時用Ubuntu的crontab),分析數據是否變化,然后發送短信。其實大部分時間是花在分析學校模擬登陸那一塊了,畢竟要提取各種值,還有url重定向,本來就才學Python,對一些東西也不是很熟悉。運行起來之后還是效果還不錯,10分鐘抓一次,第一時間知道了我的概率論。。。這些網站都是提供的一些及時的、性價比較高的商品,很多時候要一個一個網站的看(重度用戶),很容易就會錯過一些很劃算的商品。

(6)在學校的時候做過一個項目,通過爬微博的文字,分析國內各個地區的用戶收聽蝦米的熱度和最受歡迎的歌手。當然也沒有用什么很復雜的技術,就是寫基本的TF-IDF。做完的時候覺得自己好有想法啊,能實現這么有意思的東西。后來發現早就有公司做過了。當然別人做的是美國版的。于是現在,我就在這家公司工作。

(7)朋友交易了一套房子,手機號流落到了各種中介手里,隔幾天就有中介電話騷擾,不勝其煩。每接一個電話都加黑名單,但還是有新號碼打過來,so??問我咋辦!Android手機的攔截倒不是問題,但需要房產經紀人的號碼數據庫,就只能去網上爬了!各個房產站的廣州站點加上58什么的,一個多小時爬了快兩萬個號碼,去重之后還有一萬五千多??一時興起,又去爬了深圳、北京和上海,現在都不知道拿這些號碼去干嘛了??PS:貌似活躍房產經紀的數量能反應市場活躍度?PS:我覺得我可以把全國城市的都爬下來。

零基礎小白如何在最短的時間快速入門python爬蟲

答:本文邀請feifan來回答,他總結了使用python自帶庫完成爬蟲的方法,并且列出了爬蟲在實際中可能遇到的幾個問題,教會你零基礎入門python爬蟲~

此處的爬蟲并不是百度或者google這樣需要沿著某條路徑采集互聯網上所有信息的機器人,而是針對某個特定的網頁,從中提取出我們需要的信息。比如我們在中關村上查到了一臺手機的詳情頁,想把其中的cpu信息、操作系統、分辨率等等字段提出出來。即此處的爬蟲是指針對特定網頁結構、規模很小、抓取路徑收斂的情況而言。下文我們以一個實例,看看如何從頭寫一個python爬蟲。

抓取頁面基本方法

瀏覽器中看到的頁面,實際上是通過一系列的http請求加載并渲染服務器的資源。同理只要我們能夠用python發出http請求,通過get或post的方法獲得服務器返回的html片段、html頁面或json數據串,就可以從中抓取到想要的內容。

python中對http請求的封裝是在urllib和urllib2兩個庫里。

urllib提供了一些工具方法,用于對發送請求時的字符串進行轉義或編碼。

發送get/post請求則需要用到urllib2中提供的幾個類

在掌握了如何在python中構造http請求后,下一步需要做的就是結合具體的網頁,分析出web頁面的請求方式、參數傳遞方式和必要的header信息(如cookie等)。chrome控制臺的network分析基本上可以滿足需求,但一款抓包利器無疑可以提升我們的效率。推薦使用fiddler進行抓包和解包,可以更清晰第看到http中所用的不同請求方式。

字符串查找、正則表達式、html解析

http請求的response通常包含兩種:json字符串,或html代碼片段,信息的提取就轉變成了字符串處理。此時無論是通過字符串查找、正則表達式匹配,只要能定位到目標字段即可。

但更好的方法是對html的Dom樹進行解析,尤其是存在多個目標字段需要抓取時,解析html的方式能夠對特殊格式的字段信息進行批量解析。

這里使用python自帶的htmlparser進行解析,htmlparser對html片段進行深度優先的遍歷,在遍歷的過程中可以識別出開始標簽、結束標簽和標簽中的內容,因此提供了一種基于標簽tag的編程方式。看下面的例子

需要提取手機的操作系統、核心數、cpu型號等信息,根據html的標簽、屬性名稱,代碼如下:

針對中關村上的某個手機詳細

handle_data可以提取html標簽中的數據,但handle_data存在兩個問題。

(1)當標簽內容為空時,handle_data自動跳過該標簽。這里的標簽為空是指標簽中不包含任意字符串內容、不包含其他的子標簽。注意,當標簽中含有&nb等空白字符串時,handle_data可以解析出其中的data。比如以下結構中,電話號碼一列允許為空,通過html_parser解析后只得到4個<td>的標簽內容。

由于會跳過內容為空的標簽的解析,就會打亂html的結構,由于數據的缺失返回的list長度不定,導致無法將list中每項內容與html中的內容對應起來。

(2)標簽中包含子標簽時,內容會被分割到不同的handle_data函數中,比如

由于handle_data是針對每個標簽返回數據,以上的td里包含了一個span子標簽,handle_data分為2次返回數據。即第一次調用handle_data返回狀態:,第二次調用handle_data返回已拒絕。我們希望<td>標簽中的內容作為整體返回,而現在被分割成了兩塊,同樣會破壞結構。

解決以上兩個問題的關鍵方法在于,使用cache緩存字符串,把對數據的處理從handle_data推遲到handle_endtag。只有遇到end_tag時,才能確定標簽閉合,使數據完整。

爬蟲被屏蔽后怎么辦

服務器會通過一些策略屏蔽惡意爬蟲,以避免對服務器資源的消耗,如檢查同一IP的訪問頻率、訪問間隔等。

所以我們也應該使用一些簡單策略,使我們的爬蟲看起來更像是人的行為,以繞開服務器的檢測機制。常用的方法包括延長相鄰請求的間隔,相鄰間隔使用隨機時長。

在請求的header字段中包含了user-agent字段,服務器通過檢測user-agent字段確定客戶端的類型。如果不指定user-agent字段,請求時腳本會默認填充該字段,如下圖

#python中默認的user-agent字段

網上有一些說法user-agent的值會影響爬蟲是否能夠抓取web內容,為了避免爬蟲被屏蔽,將user-agent的值設為瀏覽器的類型:Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/55.0.2883.87Safari/537.36

但在實際抓取的幾個web站點中,user-agent的值對爬蟲被屏蔽沒有影響,在使用時不用刻意設置user-agent的值。

以上的方法都是避免爬蟲被屏蔽掉。但萬一很不幸爬蟲已經被屏蔽了,發出請求返回的結果是輸入驗證碼的頁面,此時該如何解決呢?

對于支持https協議的站點,此時可以嘗試的一種方案是:改用https協議。

項目中遇到爬蟲被百度屏蔽的現象,嘗試了很多方法都無效。后來將原來鏈接中的http協議換成https爬蟲又開始工作了。原理雖然不清楚,但簡單可行。

帶驗證碼的登錄

很多web內容只有在登錄后才有權限訪問,服務器通過創建session并下發sessionid來維持與客戶端的鏈接狀態??蛻舳嗽诿看伟l送請求時,都在cookie中攜帶sessionid等字段信息。sessionid是無法復用的,也即在瀏覽器中登錄后所獲得的sessionid直接拿到python腳本中使用,返回的結果仍然是跳轉到登錄頁面的。因為通過http下發的sessionid是捆綁到端口號的,也就是與服務器維持通信的是客戶端上的某個進程,把瀏覽器中的sessionid拿到python腳本中,由于更換了進程sessionid當然失效了。

既然無法繞開登錄,我們就在python腳本中完成登錄的過程,拿到登錄后返回的cookie、sessinoid等。這里有兩個難點需要解決,1)服務器登錄邏輯的分析與猜測;2)解決登錄時存在的驗證碼識別問題。

登錄除了需要post提交用戶名、密碼和sessionid之外,通常也會隱式提交部分參數,可以用chrome瀏覽器的調試模式查看post提交的參數及對應的值,登錄成功之后,我們就可以拿到返回的cookie值了。

登錄時的驗證碼可以通過OCR自動識別,嘗試了google的tesseract-ocr準確率并不高。所以推薦手動輸入驗證碼,幫助爬蟲完成登錄,畢竟授權只需要一次輸入。

手動輸入驗證碼的思路如下,在請求sessionid的同時保存驗證碼的圖片,人工讀取驗證碼的內容,與username和password一起提交。示例代碼如下:

需要抓取javascript加載的結果

詳細參考外部鏈接:https://impythonist.wordpress.com/2015/01/06/ultimate-guide-for-scraping-javascript-rendered-web-pages/

這篇文章中的思路是,通過使用webkitlibrary建立本地的javascript執行環境,模擬瀏覽器對頁面的加載渲染,從而抓取javascript處理后的頁面內容。

這個例子中javascript所加載的結果,也是通過ajax重新向服務器發起請求返回的,直接發送ajax請求并抓取結果即可。在本地搭建javascript的執行環境有些畫蛇添足,但也是一種可以參考的思路。

本文總結了使用python自帶庫完成爬蟲的方法,并且列出了爬蟲在實際中可能遇到的幾個問題,比如爬蟲被屏蔽、需要輸入驗證碼進行登錄等。實踐中的難點在于分析和猜測服務器的登錄邏輯,并且提取必需的參數完成登錄鑒權。

python的爬蟲究竟有多強大

世界上80%的爬蟲是基于Python開發的,學好爬蟲技能,可為后續的大數據分析、挖掘、機器學習等提供重要的數據源。

什么是爬蟲?

網絡爬蟲通俗的講就是通過程序去獲取web頁面上自己想要的數據,也就是自動抓取數據。

爬蟲可以做什么?

你可以用爬蟲爬圖片,爬取視頻等等你想要爬取的數據,只要你能通過瀏覽器訪問的數據都可以通過爬蟲獲取。

什么是Python?

Python(大蟒蛇)是一門解釋型、面向對象、帶有動態語義的高級程序設計語言。

Python具有強大而豐富的類庫,也經常被別人說是膠水語言,可以跟其它語言寫的模塊結合在一起。

優點

1.簡單:Python是一種代表簡單主義思想的語言。

2.易用:Python簡單容易上手,因為有簡單容易看懂的文檔。

3.速度快:運行速度快,因為Python中的標準庫和第三方庫都是C語言編寫的,所以很快。

4.免費、開源:Python是一款FLOSS(自由/源代碼軟件)之一,使用者可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用于新的自由軟件中。

5.高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。

6.可移植性:由于它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。

7.解釋性:Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然后再把它翻譯成計算機使用的機器語言并運行。這使得使用Python更加簡單。也使得Python程序更加易于移植。

8.面向對象:Python既支持面向過程的編程也支持面向對象的編程。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在“面向對象”的語言中,程序是由數據和功能組合而成的對象構建起來的。

9.可擴展性:如果需要一段關鍵代碼運行得更快或者希望某些算法不公開,可以部分程序用C或C++編寫,然后在Python程序中使用它們。

10.可嵌入性:可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。

11.豐富的庫:Python標準庫確實很龐大。它可以幫助處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。

12.規范的代碼:Python采用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程序不需要編譯成二進制代碼。

如何用gpt做爬蟲

GPT是一種自然語言處理模型,可以用于文本生成和理解。要用GPT做爬蟲,需要先定義好要爬取的網站和數據類型,然后使用Python等編程語言編寫爬蟲程序,將爬取到的數據輸入到GPT模型中進行處理和分析,最終得到需要的結果。需要注意的是,爬蟲過程中需要遵守相關法律法規和網站的使用協議,避免侵犯他人權益。

電腦爬蟲最簡單的方法

1.目前沒有最簡單的方法,但是有一些比較簡單的方法可以入門。2.電腦爬蟲需要掌握一定的編程技能,比如Python語言,了解HTML、CSS、JavaScript等網頁相關知識。同時還需要了解爬蟲的基本原理和常用的爬蟲工具,比如BeautifulSoup、Scrapy等。這些都需要一定的學習和實踐時間。3.如果想要更深入地學習電腦爬蟲,可以參考一些相關書籍、視頻教程或者在線課程,同時也可以參加一些相關的社區或者論壇,和其他爬蟲愛好者交流學習。

關于python最簡單的小爬蟲,python爬蟲入門教程(非常詳細)的介紹到此結束,希望對大家有所幫助。

返回列表
上一篇:
下一篇: