爬取網易雲課堂、網易公開課課程資料
import requests import json def getdata(index): a=input("呼叫gedata方法") print("正在抓取{index}頁資料") payload = {"pageIndex":index, "pageSize":700, "relativeOffset":50, "frontCategoryId":400000001295013, "searchTimeType":-1, "orderType":50, "priceType":-1, "activityId":0, "keyword":"" } payload= json.dumps(payload) headers = {"Accept":"application/json", "Host":"study.163.com", "Origin":"https://study.163.com", "Content-Type":"application/json", "Referer":"https://study.163.com/courses", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36" } req= requests.post("https://study.163.com/p/search/studycourse.json",data=payload,headers=headers) e=input("成功post到資料") print(type(req)) res_json = json.loads(req.text) print(type(res_json)) with open("C:/Users/Administrator/Desktop/wangyiCloud.json","w") as f: json.dump(res_json,f)print("寫入檔案完成...") a=getdata(1) b=input("執行到了這")
這段資料是爬取網易雲課堂的程式碼~因為我是寫php的,所以以上程式碼如果有什麼問題敬請斧正 我先講一下業務背景吧,leader讓我把市面上主流的線上學習的網站的課程資料全部爬取下來~ 一開始接到的時候,有點無從開始,沒做過啊, 最開始是去搜怎麼爬取網頁的資料,瞭解到了一種是通過模擬headers來獲取資料,另一種就是獲取整個頁面的html,再通過選擇器來獲取你想要的資料 最開始接觸的就是scrapy框架,打算建立在windows環境下,果然windows下的安裝果然不省心,遇到這方面問題的可以去看看我的另一篇博文:windows下安裝scrapy的各種問題 安裝好了之後,根據他的教程走,很快的就把csdn,極客,騰訊課堂都爬下來了~ 之後爬取網易雲課堂的時候,發現爬取下來的html頁面裡面沒有具體的課程資料,去看網站的整個載入過程發現,是通過js載入的資料 可以看到,資料都是通過studycourse.json載入的,那這種就簡單了,直接通過模擬headers跟post的資料就能獲取了~ 資料是通過post獲取的,提交的是Payload型別,資料格式是json, 提取一下post關鍵字,frontCategory,字面意思,前面 類別,大致猜一下應該就是課程的大分類id,keyword應該是我們搜尋時才有 pageSize是載入的資料的大小,pageIndex是第幾個頁面 因為是寫php的,所以就直接想通過curl模擬post 程式碼如下:
//curl模擬post獲取網易雲資料 public function wangyiDataAction(){ $url = "https://study.163.com/p/search/studycourse.json"; $headers = array( "Accept" =>"application/json", "Host" =>"study.163.com", "Origin" =>"https://study.163.com", "Content-Type"=>"application/json", "Referer" =>"https://study.163.com/courses", "User-Agent"=>"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36", ); $payload = array( "pageIndex" =>1, "pageSize" =>700, "relativeOffset"=>50, "frontCategoryId"=>400000001295013, "searchTimeType"=>-1, "orderType" =>50, "priceType" =>-1, "activityId" =>0, "keyword" =>"", ); $payload = json_encode($payload); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_HEADER, $headers); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $payload); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); echo"<pre>";print_r($output); return $output; }
執行之後獲取的結果卻是 搞不懂這是什麼?知道的求科普一下~ 沒辦法,用python再寫一遍~ 程式碼如下~
import requests import json def getdata(index): a=input("呼叫gedata方法") print("正在抓取{index}頁資料") payload = {"pageIndex":index, "pageSize":700, "relativeOffset":50, "frontCategoryId":400000001295013, "searchTimeType":-1, "orderType":50, "priceType":-1, "activityId":0, "keyword":"" } print(type(payload)) payload = json.dumps(payload) print(type(payload)) headers = {"Accept":"application/json", "Host":"study.163.com", "Origin":"https://study.163.com", "Content-Type":"application/json", "Referer":"https://study.163.com/courses", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36" } print(type(headers)) req = requests.post("https://study.163.com/p/search/studycourse.json",data=payload,headers=headers) e=input("成功post到資料") print(type(req)) res_json = json.loads(req.text) print(type(res_json)) with open("C:/Users/Administrator/Desktop/wangyiPublic.json","w") as f: json.dump(res_json,f) print("寫入檔案完成...") a=getdata(1) b=input("執行到了這")
因為對python不會,所以有很多列印的 執行結果如下: 比較要注意的點是req的資料型別,打印出來是requests.models.Reaponse 去百度了一下:
相關推薦
爬取網易雲課堂、網易公開課課程資料
二話不說,先上程式碼~ import requests import json def getdata(index): a=input("呼叫gedata方法") print("正在抓取{index}頁資料") payload = {"pageIndex":ind
教你爬取騰訊課堂、網易雲課堂、mooc等所有課程資訊
本文的所有程式碼都在GitHub上託管,想要程式碼的同學請點選這裡
Python + Selenium 爬取網易雲課堂課時標題及時長
Python + Selenium 爬取網易雲課堂課時標題及時長 轉載請註明出處:https://blog.csdn.net/jpch89/article/details/84142555 文章目錄 Python + Selenium 爬取網易雲課堂課時標
Python爬取網易雲課堂課程資料
本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習Python。歡迎各位到來Python學習群:960410445一起討論視訊分享學習。Python是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,
Python實例之抓取網易雲課堂搜索數據(post方式json型數據)並保存為TXT
網易雲 pytho sco 關鍵詞 page json ner urn 頁碼 本實例實現了抓取網易雲課堂中以‘java’為關鍵字的搜索結果,經詳細查看請求的方式為post,請求的結果為JSON數據 具體實現代碼如下: import requests import json
Python爬蟲入門教程 21-100 網易雲課堂課程資料抓取
寫在前面 今天咱們抓取一下網易雲課堂的課程資料,這個網站的資料量並不是很大,我們只需要使用requests就可以快速的抓取到這部分資料了。 你第一步要做的是開啟全部課程的地址,找出爬蟲規律, 地址如下: https://study.163.com/courses/ 我簡單的看了一下,頁面資料是基於
使用正則表示式抓取網易雲課堂中的資料
要抓取資料的頁面如下: 程式碼: package com.url; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.
網易雲課堂_C++程序設計入門(下)_第7單元:出入雖同趣,所向各有宜 – 文件輸入和輸出_第7單元 - 作業1:OJ編程
c++ detail using span 換行 tro size str cout 第7單元 - 作業1:OJ編程 查看幫助 返回 溫馨提示: 1.本次作業屬於Online Judge題目,提交後由系統即時判分。 2.學生可以在作業截止時間之前不限次數提
網易雲課堂_C++程序設計入門(下)_第8單元:年年歲歲花相似– 運算符重載_第8單元 - 作業2:OJ編程 - 重載數組下標運算符
ref [] jna turn draw cred 超出範圍 input detail 第8單元 - 作業2:OJ編程 - 重載數組下標運算符 查看幫助 返回 溫馨提示: 1.本次作業屬於Online Judge題目,提交後由系統即時判分。 2.學生可以在
網易雲課堂_C++程序設計入門(下)_第9單元:白公曾詠牡丹芳,一種鮮妍獨“異常”_第9單元 - 作業5:OJ編程 - 使用異常進行圖形類的錯誤處理
using define 幫助 發生 半角 etc mooc sub private 第9單元 - 作業5:OJ編程 - 使用異常進行圖形類的錯誤處理 查看幫助 返回 溫馨提示: 1.本次作業屬於Online Judge題目,提交後由系統即時判分。 2.學
網易雲課堂《JS原創視頻教程-知識點類》
觸發 ber 課堂 js跨域問題 htm 每次 技術 stat 一個 http://caniuse.com/#index //Can I use... Support tables for HTML5, CSS3, etc-支持h5和css3的情況列表 JS包含
網易雲課堂Java入門視頻課程
51cto com -o 計算機 watermark window 教學 通過 java入門 課程概述本課程不提供教學服務、作業批改及證書發放。程序設計是一門基礎課程。對於計算機相關專業而言,程序設計是專業基礎知識,是進一步學習其他專業知識的第一步階梯;對於非計算機專業而言
網易雲課堂-spark
bsp spark 分享圖片 spa 技術 課堂 image bubuko link ==============================Flink比spark優秀,但既生瑜何生亮,所以Flink沒火起來 網易雲課堂-spark
C++網易雲課堂開發工程師-操作符重載
操作 () 返回 urn lin per spa 加法 操作符 1.操作符重載,(可以使用成員函數,也可以使用非成員函數) this 所有的成員函數均隱藏著一個參數,this. this與調用者相互綁定。 complex c1,c2;
C++網易雲課堂開發工程師--堆,棧與內存管理
ret delete spa turn 內存空間 global alloc glob 工程 1.output函數 #include<iostream.h> ostream& operator<< (ostream& os, cons
C++網易雲課堂開發工程師--類模板
vat turn 全部 name 實現 temp mes ima 獲取 static complex data members static data members member functions static member functions 非靜態成員函數:non
C++網易雲課堂開發工程師--組合與繼承
一個 turn component 完成 tro 關系 pac pro art 著一個章節主要圍繞:繼承,復合,委托三個方面進行介紹。 復合:表示has-a template<class T, class Sequence = deque<T>>
C++網易雲課堂開發工程師--轉換函數
vat style font const ret return c++ number per 轉換函數 class Fraction{ public: Fraction(int num, int den = 1) : m_numerator(num), m
C++網易雲課堂開發工程師--智能指針
sha 課堂 ont vat spa 指針 cut 網易 return template<class T> class shared_ptr{ public: T& operator*( ) const {return *px;}
andrew ng 深度學習 網易雲課堂課程
輸入資料為非結構化資料圖片時,輸入向量的表示形式是將一幅影象的三基元矩陣分別抻開,形成一個長向量: 先從邏輯迴歸講起,基本的符號表示如下,使用sigmoid函式是為了將計算出來的值投影到0-1的範圍內,從而表示預測值是貓的概率: 代價函式的定義,代價函式其實就是基於訓練集樣本的誤差總和的平均值