爬蟲小例1:ajax形式的網頁數據的抓取


---恢復內容開始---

下面記錄如何抓取ajax形式加載的網頁數據:

目標:獲取“https://movie.douban.com/typerank?type_name=%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action=”下的網頁數據

第一步:網頁數據分析-----》特點:當列表條滾動到頁面下方時數據自動加載,而頁面的url並未發生變化

第二步:利用Fiddler抓包,如下圖:

圖一:請求數據

圖二:form表單

通過抓包獲取到數據規律:圖二from表單中start對應數據和圖一中的url中start對應數據隨着每次加載而遞增,其他數據未發生變化。對應這種規律我們便可構造相應請求獲取數據

需注意,數據形式為json

代碼如下:

1).urllib形式

import urllib2 
import urllib
#此處的url為上述抓包獲取的url去掉start以及limit,start以及limit數據后邊以form表單的形式傳入
url = ' https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action='
#請求投信息,偽造成瀏覽器,方式被反爬蟲策略攔截
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"}
#構建form表單
formdata = {
        "start":"20",
        "limit":"20"
        }
#urlencode()urllib中的函數,作用:將key:value形式的鍵值對轉換為"key=value"形式的字符串
data = urllib.urlencode(formdata)
#構建request實例對象
request = urllib2.Request(url,data=data,headers=headers)
#發送請求並返回響應信息
response = urllib2.urlopen(request)
#注意此處的數據形式並不是html文檔,而是json數據
json = response.read()
print html

2).request庫的get請求代碼

#coding=utf-8

import requests
url = ' https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action='
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"}
data = {
    "start":"20",
    "limit":"20",
    }
response = requests.get(url,params = data,headers = headers)
print response.text

 3).request庫的post請求

#coding=utf-8

import requests
url = ' https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action='
formdata = {
    "start":"20",
    "limit":"20"
    }
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"}
response = requests.post(url,data=formdata,headers=headers)
print response.text

 

 

---恢復內容結束---


免責聲明!

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



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