目的
MOOC SchoolCloudのコース情報をクロールします。
プロジェクトの準備
ソフトウェア:Pycharm
サードパーティライブラリ:
Webサイトアドレスを要求します:https://www.icourse163.org/
プロジェクト分析
まず、分析のためにMOOCアカウントにログインします。
要素を確認してソースコードを表示し、ソースコードに見つからなかったことを確認しました。
ここで見つけました。
クリックしてご覧ください。すべての情報はここにあります。
ディスカバリーはPOSTリクエストであるため、ここで実際のURLを取得する場合は、一連の情報を取得する必要があります。
コード
1. Cookieを使用してアカウントにログインし、実際のURLを取得します
import requests
import pprint
headers={
'user-agent':'自己的use-agent',
'cookie':'自己的cookie'
}
data={
'schoolId': '1001362003',
'p': '1',
'psize': '20',
'courseStatus': '30',
'type': '2'
}
url='https://www.icourse163.org/web/j/courseBean.getCourseListBySchoolId.rpc?csrfKey=737814f13e7a4ad18d5f674c7791c77f'
response=requests.post(url,headers=headers,data=data)
html=response.json()
pprint.pprint(html)
操作結果は
OKで、目的の結果が得られ
ました。2。ページ番号分析
2に変更すると、内容は2ページ目となり、以下同様になります。ここで番号を変更するだけで、複数ページになります。
3. Webページを分析して、必要なコンテンツを取得します
content_list=html['result']['list']
for data in content_list:
class_name=data['name']
teacherName=data['teacherName']
enrollCount=data['enrollCount']
print(class_name,teacherName,enrollCount)
完全なコード
import requests
page=int(input("爬取页数:"))
for i in range(1,page+1):
headers = {
'user-agent': '自己的user-agent',
'cookie': '自己的cookie'
}
data = {
'schoolId': '1001362003',
'p': i,
'psize': '20',
'courseStatus': '30',
'type': '2'
}
url='https://www.icourse163.org/web/j/courseBean.getCourseListBySchoolId.rpc?csrfKey=737814f13e7a4ad18d5f674c7791c77f'
response=requests.post(url,headers=headers,data=data)
html=response.json()
content_list=html['result']['list']
for data in content_list:
class_name=data['name']
teacherName=data['teacherName']
enrollCount=data['enrollCount']
print(class_name,teacherName,enrollCount)
エフェクト表示
免責事項:あなた自身の研究と参照の使用のためだけに。