首页 > 解决方案 > 从 aspx 页面解析动态生成的 url

问题描述

我正在尝试解析一个包含表格的 aspx 页面,每一行都有一个元素,可以在新选项卡上打开一个 pdf 文件。

元素打开的 url 以页面源中的表单形式存储在脚本中,但似乎只有在您实际单击元素后才会为每个文件生成脚本。

我的最终目标是保存所有这些 pdf 文件,我认为最好的解决方案是保存 url 并使用请求来保存每个 url 的内容。但是如果不实际单击每个元素,我找不到获取所有 url 的方法。

单击元素后脚本的 HTML:

 <script language="JavaScript">
    var docUrl=escape('/NGCS.Web.Secured/Viewer/NGCSViewerPage.aspx?DocumentNumber=4105ea67709148d7984ce9a2efc48157');
    window.open(unescape(docUrl)); </script>

此示例中的所需值是“docUrl”中列出的字符串,即:'/NGCS.Web.Secured/Viewer/NGCSViewerPage.aspx?DocumentNumber=4105ea67709148d7984ce9a2efc48157',或字符串中的“DocumentNumber”,即:'4105ea67709148d7984ce9a2efc48157'。

这些值中的任何一个都可用于导航到包含所需文件的页面的动态 url。

找不到与我的问题类似的东西。

标签: pythonasp.netpython-3.xparsing

解决方案


你没有提供太多关于如何持有这个对象的信息,所以我假设它是一个字符串。您可以使用正则表达式来获取文档编号,如下所示:

import re
s = ''' <script language="JavaScript">
    var docUrl=escape('/NGCS.Web.Secured/Viewer/NGCSViewerPage.aspx?DocumentNumber=4105ea67709148d7984ce9a2efc48157');
    window.open(unescape(docUrl)); </script>'''
print(re.search('DocumentNumber=([\w]+)',s).groups())

推荐阅读