在學習python的時候,一定會遇到網站內容是通過 ajax動態請求、異步刷新生成的json數據 的情況,并且通過python使用之前爬取靜態網頁內容的方式是不可以實現的,所以這篇文章將要講述如果在python中爬取ajax動態生成的數據。
至于讀取靜態網頁內容的方式,有興趣的可以查看本文內容。
這里我們以爬取淘寶評論為例子講解一下如何去做到的。
這里主要分為了四步:
一 獲取淘寶評論時,ajax請求鏈接(url)
二 獲取該ajax請求返回的json數據
三 使用python解析json數據
四 保存解析的結果
步驟一:
獲取淘寶評論時,ajax請求鏈接(url)這里我使用的是Chrome瀏覽器來完成的。打開淘寶鏈接,在搜索框中搜索一個商品,比如“鞋子”,這里我們選擇第一項商品。
然后跳轉到了一個新的網頁中。在這里由于我們需要爬取用戶的評論,所以我們點擊累計評價。
然后我們就可以看到用戶對該商品的評價了,這時我們在網頁中右擊選擇審查元素(或者直接使用F12打開)并且選中Network選項,如圖所示:
我們在用戶評論中,翻到底部 點擊下一頁或者第二頁,我們在Network中看到動態添加了幾項,我們選擇開頭為list_detail_rate.htm?itemId=35648967399的一項。
然后點擊該選項,我們可以在右邊選項框中看到有關該鏈接的信息,我們要復制Request URL中的鏈接內容。
我們在瀏覽器的地址欄中輸入剛才我們獲得url鏈接,打開后我們會發現頁面返回的是我們所需要的數據,不過顯得很亂,因為這是json數據。
二 獲取該ajax請求返回的json數據
下一步,我們就要獲取url中的json數據了。我所使用的python編輯器是pycharm,下面看一下python代碼:
# -*- coding: utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')import requestsurl='https://rate.tmall.com/list_detail_rate.htm?itemId=35648967399&spuId=226460655&sellerId=1809124267ℴ=3¤tPage=1&append=0&content=1&tagId=&posi=&picture=&ua=011UW5TcyMNYQwiAiwQRHhBfEF8QXtHcklnMWc%3D%7CUm5OcktyT3ZCf0B9Qn9GeC4%3D%7CU2xMHDJ7G2AHYg8hAS8WKAYmCFQ1Uz9YJlxyJHI%3D%7CVGhXd1llXGVYYVVoV2pVaFFvWGVHe0Z%2FRHFMeUB4QHxCdkh8SXJcCg%3D%3D%7CVWldfS0RMQ47ASEdJwcpSDdNPm4LNBA7RiJLDXIJZBk3YTc%3D%7CVmhIGCUFOBgkGiMXNwswCzALKxcpEikJMwg9HSEfJB8%2FBToPWQ8%3D%7CV29PHzEfP29VbFZ2SnBKdiAAPR0zHT0BOQI8A1UD%7CWGFBET8RMQszDy8QLxUuDjIJNQA1YzU%3D%7CWWBAED4QMAU%2BASEYLBksDDAEOgA1YzU%3D%7CWmJCEjwSMmJXb1d3T3JMc1NmWGJAeFhmW2JCfEZmWGw6GicHKQcnGCUdIBpMGg%3D%3D%7CW2JfYkJ%2FX2BAfEV5WWdfZUV8XGBUdEBgVXVJciQ%3D&isg=82B6A3A1ED52A6996BCA2111C9DAAEE6&_ksTS=1440490222698_2142&callback=jsonp2143' #這里的url比較長content=requests.get(url).content
新聞熱點
疑難解答
圖片精選