如何使用python爬取網頁動態數據


我們在使用python爬取網頁數據的時候,會遇到頁面的數據是通過js腳本動態加載的情況,這時候我們就得模擬接口請求信息,根據接口返回結果來獲取我們想要的數據。

以某電影網站為例:我們要獲取到電影名稱以及對應的評分

首先我們通過開發者模式,找到請求該頁面的接口信息

另外,為了能模擬瀏覽器訪問接口信息,我們需要獲取到請求頭部信息

 獲取到以上信息,我們就可以通過python的requests庫來模擬訪問接口啦

1、導入requests庫

import requests

2、定義請求參數信息

url = "https://movie.douban.com/j/search_subjects"
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0",
}
param = {"type": "movie", "tag": "最新", "sort": "recommend", "page_limit": "20", "page_start": "0"}

3、獲取請求的json對象

ret = requests.get(url, params=param, headers=header)
js = ret.json()
print(js)

4、根據翻頁信息,我們知道"page_start"這個參數是每20遞增一次的,可以通過定義變量使用for 循環來自動獲取下一頁信息,我們可以對以上代碼進行優化。另外,為了防止請求過快,被當成惡意攻擊,我們可以導入time模塊,每次請求間隔2-3s

count = 0

for i in range(3):

  param = {"type": "movie", "tag": "最新", "sort": "recommend", "page_limit": "20", "page_start": count}

  time.sleep(random.uniform(2, 3))

  ret = requests.get(url, params=param, headers=header)

  js = ret.json()

  for info in js["subjects"]:
    rate, title = info["rate"], info["title"]
    print(f"《{title}》的評分是:{rate}")

  count += 20

這樣我們就獲取到想要的數據,不用挨個copy啦。我們可以把獲取的數據寫入到文件里永久保存,並進行整理。下次再分享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM