爬虫類プロジェクトの実際の戦闘14:MOOCコースのクロール

目的

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)

エフェクト表示

ここに画像の説明を挿入
免責事項:あなた自身の研究と参照の使用のためだけに。

おすすめ

転載: blog.csdn.net/qq_44862120/article/details/109002396