欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 抓取動態(tài)網(wǎng)頁內(nèi)容方案詳解

 更新時間:2014年12月25日 08:59:33   投稿:hebedich  
這篇文章主要介紹了Python 抓取動態(tài)網(wǎng)頁內(nèi)容方案詳解,首先通過Chrome的工具來進(jìn)行分析,然后再使用python進(jìn)行處理,最終得到我們需要的內(nèi)容,非常的方便,這里也算是給大家提供一個思路

用Python實(shí)現(xiàn)常規(guī)的靜態(tài)網(wǎng)頁抓取時,往往是用urllib2來獲取整個HTML頁面,然后從HTML文件中逐字查找對應(yīng)的關(guān)鍵字。如下所示:

復(fù)制代碼 代碼如下:

但是,在動態(tài)頁面中,所顯示的內(nèi)容往往不是通過HTML頁面呈現(xiàn)的,而是通過調(diào)用js等方式從數(shù)據(jù)庫中得到數(shù)據(jù),回顯到網(wǎng)頁上。以發(fā)改委網(wǎng)站上的“備案信息”(http://beian.hndrc.gov.cn/)為例,要抓取此頁面中的某些備案項(xiàng)目。例如“http://beian.hndrc.gov.cn/indexinvestment.jsp?id=162518”。

那么,在瀏覽器中打開此頁面:

相關(guān)信息都顯示的很全了,但是如果按照之前的辦法:

復(fù)制代碼 代碼如下:

up=urllib2.urlopen(url)
cont=up.read()

就抓取不到上述內(nèi)容了。

我們查看一下這個頁面對應(yīng)的源碼:

由源碼可以看出,這個《備案確認(rèn)書》屬于“填空”形式的,HTML提供文字模板,js根據(jù)不同的id提供不同的變量,“填入”到文字模板中,形成了一個具體的《備案確認(rèn)書》。所以單純抓取此HTML,只能得到一些文字模板,而無法得到具體內(nèi)容。

那么,該如何找到那些具體內(nèi)容呢?可以利用Chrome的“開發(fā)者工具”來尋找誰是真正的內(nèi)容提供者。

打開Chrome瀏覽器,按下鍵盤F12即可呼出此工具。如下圖:

此時選中“Network”標(biāo)簽,在地址欄中輸入此頁面“http://beian.hndrc.gov.cn/indexinvestment.jsp?id=162518”,瀏覽器會分析出此次響應(yīng)的全過程,而紅框內(nèi)的文件,就是此次響應(yīng)中,瀏覽器和web后端的所有通信。

因?yàn)橐@得不同企業(yè)對應(yīng)的不同信息,那么瀏覽器發(fā)送給服務(wù)器的請求里面一定會有一個和當(dāng)前企業(yè)id有關(guān)的參數(shù)。

那么,參數(shù)是多少呢?URL上有,是“jsp?id=162518”,問號表示要調(diào)用參數(shù),后面跟的是id號即是被調(diào)用的參數(shù)。而通過對這幾個文件的分析,很顯然,企業(yè)信息存在于“indexinvestment.action”文件中。

然而,雙擊打開此文件并不能獲得企業(yè)信息,而是一堆代碼。因?yàn)闆]有對應(yīng)的參數(shù)為它指明要顯示第幾號的信息。如圖:

那么,應(yīng)該如何將參數(shù)傳遞給它呢?這時我們?nèi)耘f看F12窗口:

“Header”一欄中明確地顯示出了此次響應(yīng)的過程:

對目標(biāo)URL,用POST的方式,傳遞了一個id為162518的參數(shù)。

我們先手工操作一下。js是如何調(diào)用參數(shù)的呢?對,上面說過:問號+變量名+等號+變量對應(yīng)的數(shù)字。也就是說,向“http://beian.hndrc.gov.cn/indexinvestment.action”這個頁面提交id為162518的參數(shù)時,應(yīng)該在URL后面加上

“?id=162518”,即

“http://beian.hndrc.gov.cn/indexinvestment.action?id=162518”。

我們把這個URL粘貼到瀏覽器中來看:

似乎有了點(diǎn)內(nèi)容,可是都是亂碼啊,怎么破?熟悉的朋友可能一眼就看出來,這是編碼的問題。是因?yàn)轫憫?yīng)回來的內(nèi)容與瀏覽器默認(rèn)的編碼方式不同。只需要在Chrome右上角菜單——更多工具——編碼——“自動檢測”即可。(其實(shí)這是UTF-8的編碼,而Chrome默認(rèn)的是中文簡體)。如下圖:

好了,真正的信息源已經(jīng)被挖出,剩下的就是用Python處理這些頁面上的字符串,然后剪切、拼接,重新組成新的《項(xiàng)目備案書》了。

再然后使用for、while等循環(huán),批量獲取這些《備案書》。

正如“不論是靜態(tài)網(wǎng)頁,動態(tài)網(wǎng)頁,模擬登陸等,都要先分析、搞懂邏輯,再去寫代碼”所說,編程語言只是一個工具,重要的是解決問題的思路。有了思路,再尋找趁手的工具去解決,就OK了。

相關(guān)文章

  • Python正確調(diào)用 jar 包加密得到加密值的操作方法

    Python正確調(diào)用 jar 包加密得到加密值的操作方法

    這篇文章主要介紹了Python 正確調(diào)用 jar 包加密得到加密值的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Opencv+Python 色彩通道拆分及合并的示例

    Opencv+Python 色彩通道拆分及合并的示例

    今天小編就為大家分享一篇Opencv+Python 色彩通道拆分及合并的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python判斷兩個序列的成員是否一樣的實(shí)例代碼

    python判斷兩個序列的成員是否一樣的實(shí)例代碼

    在本篇文章里小編給大家整理了關(guān)于python判斷兩個序列的成員是否一樣的實(shí)例代碼,需要的朋友們參考下。
    2020-03-03
  • tensorflow2 自定義損失函數(shù)使用的隱藏坑

    tensorflow2 自定義損失函數(shù)使用的隱藏坑

    本文主要介紹了tensorflow2 自定義損失函數(shù)使用的隱藏坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • python的函數(shù)最詳解

    python的函數(shù)最詳解

    這篇文章主要介紹了詳解python中各種的函數(shù),是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • 在keras 中獲取張量 tensor 的維度大小實(shí)例

    在keras 中獲取張量 tensor 的維度大小實(shí)例

    這篇文章主要介紹了在keras 中獲取張量 tensor 的維度大小實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python Jupyter Notebook顯示行數(shù)問題的解決

    Python Jupyter Notebook顯示行數(shù)問題的解決

    這篇文章主要介紹了Python Jupyter Notebook顯示行數(shù)問題的解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 詳解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法

    詳解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法

    這篇文章主要介紹了詳解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • pytorch中節(jié)約顯卡內(nèi)存的方法和技巧

    pytorch中節(jié)約顯卡內(nèi)存的方法和技巧

    顯存不足是很多人感到頭疼的問題,畢竟能擁有大量顯存的實(shí)驗(yàn)室還是少數(shù),而現(xiàn)在的模型已經(jīng)越跑越大,模型參數(shù)量和數(shù)據(jù)集也越來越大,所以這篇文章給大家總結(jié)了一些pytorch中節(jié)約顯卡內(nèi)存的方法和技巧,需要的朋友可以參考下
    2023-11-11
  • Python實(shí)現(xiàn)特定場景去除高光算法詳解

    Python實(shí)現(xiàn)特定場景去除高光算法詳解

    這篇文章主要介紹了如何利用Python+OpenCV實(shí)現(xiàn)特定場景去除高光算法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2021-12-12

最新評論