如何用Python,C#等語言去實現抓取靜態網頁+抓取動態網頁+類比登陸網站__Python

來源:互聯網
上載者:User
轉自: http://www.crifan.com/how_to_use_some_language_python_csharp_to_implement_crawl_website_extract_dynamic_webpage_content_emulate_login_website/

背景

在網路,網頁,網站處理方面,很多人都遇到過,想要用某種語言(Python,C#等),去實現一些需求,常見的有這幾大類: 想要從某靜態網頁中,提取某些內容 想要抓取某些動態網頁中的某些內容 想要類比登陸某個網站

對於這類需求,其基本的背後邏輯,都是相同的。

下面就是來介紹一下,如何?這些功能。

  搞懂訪問網頁所涉及的http相關的邏輯知識

先要搞懂對應的,訪問url地址的背後的邏輯:

需要你提供哪些內容: url headers:部分可選,部分必須 cookies(可選) post data 當是POST方法時,才需要

然後獲得什麼樣的內容: html源碼(或其他的,json字串,圖片的資料等等) cookie(可能有):對於後續的訪問其他的url,可能需要提供此處所返回的(新的)cookie

 

詳細解釋,可參考:

【整理】關於抓取網頁,分析網頁內容,類比登陸網站的邏輯/流程和注意事項

 

提示:

1.html的charset編碼

關於html網頁的編碼方面的背景知識,最好再去看看:

【整理】關於HTML網頁源碼的字元編碼(charset)格式(GB2312,GBK,UTF-8,ISO8859-1等)的解釋

  搞懂你所要處理的網頁的執行的邏輯過程

簡單的說就是,你自己所要處理的某個url地址,需要提供哪些值,然後才能獲得你所需要的值。

先把你自己關心的這些邏輯搞懂,才能談到後續用代碼實現出來。

如果此邏輯過程很簡單,那麼你不用工具去分析,自己看代碼,能自己分析出來,也是可以的。

但是此過程往往都很複雜,所以,一般都需要使用對應的開發人員工具去分析。

比如用IE9的F12去捕獲對應的執行過程,然後從中分析出你所需要關心的某些網頁的執行邏輯的。

 

詳細解釋和示範參見:

【教程】手把手教你如何利用工具(IE9的F12)去分析類比登陸網站(百度首頁)的內部邏輯過程

 

提示:

1.其他各種的分析工具

對於IE9的F12,等不熟悉的話, 可以先去看看:

【總結】瀏覽器中的開發人員工具(IE9的F12和Chrome的Ctrl+Shift+I)-網頁分析的利器

對於此部分內容,另外還有個文章可參考:

【整理】各種瀏覽器中的開發人員工具Developer Tools:IE9的F12,Chrome的Ctrl+Shift+J,Firefox的Firebug

2. 複雜的參數值的分析

在用工具分析的過程中,你會發現有些所要分析的值,是相對比較複雜的,無法直接就獲得,所以就需要去調試分析。

關於如何分析複雜的參數值是如何獲得的,可以參考:

【教程】如何利用IE9的F12去分析網站登陸過程中的複雜的(參數,cookie等)值(的來源) 
3.另外一個例子

後來又寫了個例子,用於分析如何從songtaste的播放頁面地址中找到歌曲的真真實位址:

【教程】如何用IE9的F12去抓取某首Songtaste歌曲的真真實位址

  用某種語言去實現上述的邏輯

等把你要處理的所有的邏輯過程和執行順序,都搞懂了之後,然後才是用某種語言去實現對應的邏輯過程。

 

提示:

不過,關於具體在代碼中實現對應的邏輯,有一些通用的邏輯:

1. url地址的編碼和解碼

其中,如果涉及到,url地址的解碼和編碼的話,可以參考:

【整理】關於http(GET或POST)請求中的url地址的編碼(encode)和解碼(decode)

2.關於headers,cookie,post data等如何處理

雖然是為動態網頁抓取所寫,但是基本的邏輯都是一樣的:

【整理】網頁抓取,類比登陸,抓取動態網頁內容等過程中,所涉及的Headers資訊,Cookie資訊,POST資料的處理邏輯

3.關於提取網頁內容的方法

對於簡單的html網頁中的內容,當然是可以使用Regex的。

但是對於複雜的內容提取,還是建議用第三方的特定的庫去處理:

【整理】關於用Regex處理html代碼方面的建議

其中:

Python:相關用於解析html的庫,推薦用:

【總結】Python的第三方庫BeautifulSoup的使用心得

 

關於程式碼範例示範方面,根據之前的三大類需求,有三大類系列的教程: 想要從某靜態網頁中,提取某些內容 Python版

【教程】抓取網並提取網頁中所需要的資訊 之 Python版

  C#版

【教程】抓取網並提取網頁中所需要的資訊 之 C#版 想要抓取某些動態網頁中的某些內容

此處,目前已有的教程,是從頭開始解釋整個過程的:

【教程】如何抓取動態網頁內容

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.