python网页数据抓取(抓取一下网易云课堂课程数据--提取post关键字 )

优采云 发布时间: 2022-03-24 12:17

  python网页数据抓取(抓取一下网易云课堂课程数据--提取post关键字

)

  写在前面

  今天,我们来抓取网易云课堂的课程数据。这个网站中的数据量并不是很大。我们只需要使用请求来快速抓取这部分数据。

  你需要做的第一件事是打开所有课程的地址并找出爬虫规则。

  地址如下:

  

  简单看了一下,页面数据是基于

  这个地址是异步加载的。您需要开发人员工具自己尝试

  多次尝试后,以该地址获取的数据为准。

  还有一点需要注意,这次是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 门课程

  

  好吧,您需要代码和数据,请发表评论并留下我与您联系的方式。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线