如何用Python,C#等語言去實現抓取靜態網頁+抓取動態網頁+模擬登陸網站
轉自:
背景
在網路,網頁,網站處理方面,很多人都遇到過,想要用某種語言(Python,C#等),去實現一些需求,常見的有這幾大類:
- 想要從某靜態網頁中,提取某些內容
- 想要抓取某些動態網頁中的某些內容
- 想要模擬登陸某個網站
對於這類需求,其基本的背後邏輯,都是相同的。
下面就是來介紹一下,如何實現這些功能。
搞懂訪問網頁所涉及的http相關的邏輯知識
先要搞懂對應的,訪問url地址的背後的邏輯:
需要你提供哪些內容:
- url
- headers:部分可選,部分必須
- cookies(可選)
-
post data
- 當是POST方法時,才需要
然後獲得什麼樣的內容:
- html原始碼(或其他的,json字串,圖片的資料等等)
- cookie(可能有):對於後續的訪問其他的url,可能需要提供此處所返回的(新的)cookie
詳細解釋,可參考:
提示:
1.html的charset編碼
關於html網頁的編碼方面的背景知識,最好再去看看:
搞懂你所要處理的網頁的執行的邏輯過程
簡單的說就是,你自己所要處理的某個url地址,需要提供哪些值,然後才能獲得你所需要的值。
先把你自己關心的這些邏輯搞懂,才能談到後續用程式碼實現出來。
如果此邏輯過程很簡單,那麼你不用工具去分析,自己看程式碼,能自己分析出來,也是可以的。
但是此過程往往都很複雜,所以,一般都需要使用對應的開發人員工具去分析。
比如用IE9的F12去捕獲對應的執行過程,然後從中分析出你所需要關心的某些網頁的執行邏輯的。
詳細解釋和演示參見:
提示:
1.其他各種的分析工具
對於IE9的F12,等不熟悉的話, 可以先去看看:
對於此部分內容,另外還有個帖子可參考:
2. 複雜的引數值的分析
在用工具分析的過程中,你會發現有些所要分析的值,是相對比較複雜的,無法直接就獲得,所以就需要去除錯分析。
關於如何分析複雜的引數值是如何獲得的,可以參考:
後來又寫了個例子,用於分析如何從songtaste的播放頁面地址中找到歌曲的真實地址:
用某種語言去實現上述的邏輯
等把你要處理的所有的邏輯過程和執行順序,都搞懂了之後,然後才是用某種語言去實現對應的邏輯過程。
提示:
不過,關於具體在程式碼中實現對應的邏輯,有一些通用的邏輯:
1. url地址的編碼和解碼
其中,如果涉及到,url地址的解碼和編碼的話,可以參考:
2.關於headers,cookie,post data等如何處理
雖然是為動態網頁抓取所寫,但是基本的邏輯都是一樣的:
3.關於提取網頁內容的方法
對於簡單的html網頁中的內容,當然是可以使用正則表示式的。
但是對於複雜的內容提取,還是建議用第三方的特定的庫去處理:
其中:
Python:相關用於解析html的庫,推薦用:
關於程式碼示例演示方面,根據之前的三大類需求,有三大類系列的教程:
想要從某靜態網頁中,提取某些內容
Python版
C#版
想要抓取某些動態網頁中的某些內容
此處,目前已有的教程,是從頭開始解釋整個過程的:
然後解釋之前所介紹的,如何用工具分析的:
關於程式碼實現,等以後會更新的。
但是,其實,相關的程式碼,去參考別的,靜態網頁內容提取,模擬登陸方面的程式碼,也都是可以的。
想要模擬登陸某個網站
Python版
C#版
總結
總之,做任何事情,都是先要搞懂邏輯,然後才是如何實現。
希望這裡把邏輯和實現,都解釋清楚了。