1. 程式人生 > >如何用Python,C#等語言去實現抓取靜態網頁+抓取動態網頁+模擬登陸網站

如何用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#版

總結

總之,做任何事情,都是先要搞懂邏輯,然後才是如何實現。

希望這裡把邏輯和實現,都解釋清楚了。