url地址:https://ac.nowcoder.com/acm/contest/calendar
通过F12抓包,可以找到我们需要的内容在
这个XHR请求中。
这个data就是我们需要的数据。
1.添加请求头信息:
user-agent:使用自己的电脑信息。
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36'
}
2.写一个获取html的函数
def getHtml(url):
try:
date = str(datetime.datetime.now().year) + ' - ' + str(datetime.datetime.now().month)
second = '{:.3f}'.format(time.time())
params = {
'token': '',
'month': date,
'_': second
}
r = requests.get(url, headers=headers, params=params)
r.encoding = r.apparent_encoding
r.raise_for_status()
# print(r.headers)
return r.text
except:
return ''
注意添加对应的请求头参数。
这里的month 就是当前年-月
_ 就是1970到现在的毫秒数然后取到小数点后三位。
主函数:
def main():
# url1 = 'https://ac.nowcoder.com/acm/calendar/contest?token=&month=2021-4&_=1619058988112'
url1 = 'https://ac.nowcoder.com/acm/calendar/contest'
html = json.loads(getHtml(url1))
data = html['data']
for item in data:
print(item)
运行结果
这个人讲得挺好的,关于json.dumps,json.loads, dump(),load()方法。
还可以使用Demjson 第三方库来实现json的编码和解码。