悼良会之永绝兮 2020-10-19 17:32 采纳率: 0%
浏览 100

Python定向爬虫遭遇Angular路由跳转,如何找到目标url链接?

使用爬虫获取在线学习网站课件,目的是通过课程列表url,获取所有课程的课件。由于页面使用Angular实现页面跳转,所以在分析网页源码和异步加载时找不到课件的courseID。前期分析结果如下:

1.课程列表界面和源码

https://nbcb.scho.com:8020/pc/#/scho_home/column_detail?columnId=16132 #课程列表url,通过此链接获取所有课件

图片说明

图片说明

2.点击课程列表界面的具体课件,鼠标未变成小手一样的图标,仍然是一个箭头。进入点击后进入课件界面:

`

https://nbcb.scho.com:8020/pc/#/scho_home/column_detail #课件界面url未发生变化
`

图片说明

3.课件界面所有http请求如下:

图片说明

图片说明

图片说明

4.使用浏览器开发者工具找到目标文件是通过获取图片来组成课件,URL长这样:


https://nbcb.scho.com:8020/file/nbcb/310685/20200928/7D65B3205BA5B9ADDE49317B7E5DB029/out//70.jpg

5.通过页面源代码解析,未找到课程的id:7D65B3205BA5B9ADDE49317B7E5DB029。

但getCourseDetail请求链接的参数中有个CourseID=2405310,返回Json数据中包含7D65B3205BA5B9ADDE49317B7E5DB029。

  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-16 19:25
    关注

    参考GPT和自己的思路:

    针对您的问题,由于Angular实现页面跳转,使得页面的源代码中无法找到课程的ID,因此需要通过其他方式获取课程ID。

    根据您提供的信息,可以尝试通过分析页面的http请求来获取课程ID。具体方法如下:

    1. 首先,通过分析课程列表界面和课件界面所有的http请求,可以找到一个请求链接为/api/course/getCourseDetail。该链接包含了当前课程的课程ID参数,可以通过获取该参数来获得当前课程的课程ID。

    2. 发送该链接的请求,并获得返回的Json数据。该数据中包含了当前课程的详细信息,其中也包含了课程的课程ID。

    3. 根据获得的课程ID构建目标文件的URL。具体地,目标文件的URL可以通过将以下三个部分拼接而成:

      • baseURL: https://nbcb.scho.com:8020/file/nbcb/
      • courseId: 从第二步中获得的课程ID
      • filePath: 从第四步中获得的文件路径

      以上三个部分拼接而成的目标文件URL即为所要获取的课程文件的URL。

    希望以上答复能够帮到您解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!