悼良会之永绝兮 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。

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

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog