1. 程式人生 > >Python如何爬取動態網頁資料

Python如何爬取動態網頁資料

1.引言

  說到爬網頁,我們一般的操作是先檢視原始碼或者審查元素,找到資訊所在節點,然後用 beautifulsoup/xpth/re 來獲取資料,這是我們對付靜態網頁的常用手段。
  但大家也知道,現在的網頁大多都是動態的了,即資料是通過js渲染載入的,對付靜態網頁那一套在這根本不討好,所以,掌握爬取動態載入資料的方法就顯得十分必要了。
  下面以爬取中國電影網中國票房排行前500為例講解下獲取動態資料的一般步驟。

2.例項與步驟

2.1首先開啟資料頁面,右鍵選擇審查元素,然後選擇Network——>XHR,可以看到,現在裡面什麼都沒有。
這裡寫圖片描述

2.2然後點選瀏覽器的重新整理按鈕或者按F5重新整理頁面,可以看到,有一條資料出現了,這個連結就是獲取資料的頁面API,選擇Response,可以看到,它是以Json格式返回的資料,我們需要的資訊都在裡面。
這裡寫圖片描述

2.3點選頁面上的下一頁,多獲取幾條資料,以便找到它們之間的聯絡。
這裡寫圖片描述
可以看到,圖上的幾條資料鏈接只有最後的頁碼不同,簡直不要太友好!複製一條連結儲存,用作程式碼模擬參考。

2.4知道了資料鏈接間的關係,我們就可以在程式碼裡面模擬了。比如我們要獲取前50頁的資訊,那就可以這樣寫。

  for i in range(1, 51, 1):
        src = 'http://www.cbooo.cn/Mdata/getMdata_movie?area=50&type=0&year=0&initial=%E5%85%A8%E9%83%A8&pIndex=' + str(i)
        getHtml(src)

2.5通過以上操作我們得到了返回的資料,但返回的是Json格式的資料,所以我們需要對它進行解析,然後從中得到每部電影的ID(可以發現,每部電影的連結都是這種格式:http://www.cbooo.cn/m/641515,後面的數字是電影的ID,這是我們需要從返回的Json資料裡得到的東西。),得到ID後,組成電影連結,之後就是靜態頁面的操作了。

import requests
import json
def getHtml(src):
    html = requests.get(src).content.decode('utf-8')
    for con in json.loads(html)['pData'
]: url = 'http://www.cbooo.cn/m/' + str(con['ID']) newhtml = requests.get(url).content.decode('utf-8')

3.總結

  獲取動態資料的關鍵是找到“頁面獲取資料的API”,然後找到這種資料鏈接間的關係,之後對返回的資料進行解析,從中得到需要的資料。

相關推薦

Python如何動態網頁資料

1.引言   說到爬網頁,我們一般的操作是先檢視原始碼或者審查元素,找到資訊所在節點,然後用 beautifulsoup/xpth/re 來獲取資料,這是我們對付靜態網頁的常用手段。   但大家也知

python 動態網頁(百度圖片)

# python 3.6.3 import re import os from urllib import parse from urllib import request ################################################### # 搜尋關鍵字

Python3+Selenium動態網頁資料

背景: 有時候想獲取網頁的資訊,然後下載裡面的圖片資料等等 遇到的問題: 有時一些網頁是動態的,一些內容是通過js非同步拉取,甚至拉取時間是懶載入的,例如滾動到元素位置的時候才載入 解決方案: 這個時候就需要Selenium神器了 Selenium 是什麼?一句話

python動態網頁

還記得在之前一篇python開發電影查詢系統(一)—python實現後臺資料中,對電影的下載地址無法進行爬取,原因是下載地址在網頁原始碼中無法檢視,而是存放在js中,動態載入了。所以在爬取時,我在文章中寫道 現在,我們找到了攻破他反爬的方法。下面我來詳細介

Python使用selenium動態網頁時遇到的問題

我們在做京東手機資訊的爬取時,遇到的一些問題,現在就來跟大家分享一下。 1.首先,京東的網頁是動態的,當我們搜尋一個商品時,需要把頁面往下翻,下面的內容才會出來,這也是我們選selenium方法的原因 解決方法:讓瀏覽器模擬下拉幾次頁面即可 from selen

[Python爬蟲]Scrapy配合Selenium和PhantomJS動態網頁

Python世界中Scrapy一直是爬蟲的一個較為成熟的解決方案,目前javascript在網頁中應用越來越廣泛,越來越多的網站選擇使用javascript動態的生成網頁的內容,使得很多純html的爬蟲解決方案失效。針對這種動態網站的爬取,目前也有很多解決方案。

Python爬蟲之動態頁面資料

很多網站通常會用到Ajax和動態HTML技術,因而只是使用基於靜態頁面爬取的方法是行不通的。對於動態網站資訊的爬取需要使用另外的一些方法。 先看看如何分辨網站時靜態的還是動態的,正常而言含有“檢視更多”字樣或者開啟網站時下拉才會載入內容出來的進本都是動態的,簡便的方法就是在

動態網頁:Selenium

如何 瀏覽器 要去 nbsp ges selenium 安全性 接口 比較 參考:http://blog.csdn.net/wgyscsf/article/details/53454910 概述 在爬蟲過程中,一般情況下都是直接解析html源碼進行分析解析即可。但是

動態網頁中關於構造瀏覽器頭的註意事項

rand 服務器 mage 地址 span gzip 原來 動態網頁 ati 在原來爬取動態網頁圖片中,獲取到了圖片的實際地址,但是下載下來的圖片是損壞的,究其原因,是服務器端阻止了訪問,但是觀察發現 headers = {‘User-Agent‘: random.cho

網路爬蟲:動態網頁

import requests from bs4 import BeautifulSoup res = requests.get('http://news.sina.com.cn/c/nd/2017-06-12/doc-ifyfzhac1650783.shtml') res.encoding = '

python 靜態網頁

# python 3.6.3 import re from urllib import request # '''網址''' 圖片_百度百科 獲取整個網頁的程式碼 url = 'https://baike.baidu.com/item/%E5%9B%BE%E7%89%87/372416?fr

python 了租房資料

  爬取連結:https://sh.lianjia.com/zufang/ 程式碼如下: import requests # 用於解析html資料的框架 from bs4 import BeautifulSoup # 用於操作excel的框架 from xlwt import

Python微博資料生成詞雲圖片

很早之前寫過一篇怎麼利用微博資料製作詞雲圖片出來,之前的寫得不完整,而且只能使用自己的資料,現在重新整理了一下,任何的微博資料都可以製作出來,放在今天應該比較應景。 一年一度的虐汪節,是繼續蹲在角落默默吃狗糧還是主動出擊告別單身汪加入散狗糧的行列就看你啦,七夕送什麼才有心意,程式猿可以試試用

R語言動態網頁之環境準備

   在R實現pm2.5地圖資料展示文章中,使用rvest包實現了靜態頁面的資料抓取,然而rvest只能抓取靜態網頁,而諸如ajax非同步載入的動態網頁結構無能為力。在R語言中,爬取這類網頁可以使用RSelenium包和Rwebdriver包。   RSelenium包和Rwebdriver包都是

Python B 站資料分析,宋智孝李光洙誰最受中國粉絲喜愛

作者 | 左伊雅責編 | 胡巍巍《Running Man》是韓國SBS電視臺在《星期天真好》單元

Python微博資料生成詞雲圖片

很早之前寫過一篇怎麼利用微博資料製作詞雲圖片出來,之前的寫得不完整,而且只能使用自己的資料,現在重新整理了一下,任何人的微博資料都可以製作出來,即使是Python小白也能分分鐘做出來。 準備工作 本環境基於Python3,理論上Python2.7也是可行的,先安裝必要的第三方依賴包: #

Python3網路爬蟲:Scrapy入門實戰之動態網頁圖片

Python版本: python3.+ 執行環境: Mac OS IDE: pycharm 一 前言 二 Scrapy相關方法介紹 1 搭建Scrapy專案 2 shell分析 三 網頁分析

Python3網路爬蟲:requests動態網頁內容

本文為學習筆記 學習博主:http://blog.csdn.net/c406495762 Python版本:python3.+ 執行環境:OSX IDE:pycharm 一、工具準備 抓包工具:在OSX下,我使用的是Charles4.0 下載連結以及安裝教

動態網站資料(soup的css方式處理資料

import requests from bs4 import BeautifulSoup url = 'https://knewone.com/discover?page=' def get_in

Python Yahoo! Finance 資料問題總結

在《Python for Data Analysis》的第五章 Pandas 入門中,有一段分析 Yahoo! Fiannce 的股票價格和成交量的程式碼,此程式碼年代已久,如果照寫,根本不能正確執行,本篇文章總結了我遇到的幾個問題,以及解決辦法。 import