python数据抓取课程_Python爬虫入门教程 21-100 网易云课堂课程数据抓取
寫在前面
今天咱們抓取一下網易云課堂的課程數據,這個網站的數據量并不是很大,我們只需要使用requests就可以快速的抓取到這部分數據了。 你第一步要做的是打開全部課程的地址,找出爬蟲規律,
地址如下: https://study.163.com/courses/
我簡單的看了一下,頁面數據是基于 https://study.163.com/p/search/studycourse.json 這個地址進行異步加載的。你自己嘗試的時候需要借助開發者工具 進行多次嘗試,抓取到這個地址的數據為準。
還有一個地方需要注意,這次是post提交方式,并且提交數據是payload類型的,這個原因導致我們的代碼和以前的略微有一些不同的地方。
提取post關鍵字,看一下各個參數的意思,如果你爬取的網站足夠多,那么訓練出來的敏感度能夠快速的分析這些參數
{"pageIndex":55, # 頁碼
"pageSize":50, # 每頁數據大小
"relativeOffset":2700,
"frontCategoryId":-1,
"searchTimeType":-1,
"orderType":50,
"priceType":-1,
"activityId":0,
"keyword":"" # 搜索相關
}
好了,可以開始編寫代碼了,核心的代碼就是通過requests模塊發送post請求
def get_json(index):
print(f"正在抓取{index}頁數據")
payload = {"pageIndex":index,
"pageSize":50,
"relativeOffset":50,
"frontCategoryId":-1,
"searchTimeType":-1,
"orderType":50,
"priceType":-1,
"activityId":0,
"keyword":""
}
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":"自己去找個瀏覽器UA"
}
try:
# 請注意這個地方發送的是post請求
# CSDN 博客 夢想橡皮擦
res = requests.post("https://study.163.com/p/search/studycourse.json",json=payload,headers=headers)
content_json = res.json()
if content_json and content_json["code"] == 0:
data = get_content(content_json) # 獲取正確的數據
############################################
if len(data) > 0:
save_mongo(data) # 保存數據
############################################
except Exception as e:
print("出現BUG了")
print(e)
finally:
time.sleep(1)
index+=1
get_json(index)
def get_content(content_json):
if "result" in content_json:
return content_json["result"]["list"]
因為獲取到的數據是json類型的,所以,數據可以快速的保存到mongodb里面,保存數據的代碼我依舊留空,希望你自己可以完善。
通過很短的時間,我們就捕獲到了3000門課程
好了,需要代碼和數據,請評論留下我能聯系你的方式即可。
原文出處:https://www.cnblogs.com/happymeng/p/10242778.html
總結
以上是生活随笔為你收集整理的python数据抓取课程_Python爬虫入门教程 21-100 网易云课堂课程数据抓取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel自动调整行高和设置默认行高
- 下一篇: python交通标志识别_YOLOv3目