首页 > 编程语言 >python爬虫获取script标签中的var变量值

python爬虫获取script标签中的var变量值

时间:2023-08-09 15:11:47浏览次数:51  
标签:script python indData re html str var

遇到问题:

资料调研过程中遇到js动态生成页面(在检查中可以看到需要爬取的数据,但是查看网页源代码中都是js动态生成,跟检查中的代码不一致),通过xpath在html中获取不到需要的数据,真正的数据在

 所需要的数据为script中的var indData,数据类型为包含有许多dict的list

解决办法:

可以通过正则在script标签中截取数据,然后转化为json格式的数据。

代码如下:

#此处模拟获取到的html的text
    response_html_str = """
        <!DOCTYPE html>
        <html>
        <head>
        </head>
        <body>
            <script>
                var indData = [{"No": 1, "Status": "A", "Date": "Dec 17, 2004 12:00:00 AM", "Desc": "Dealing in abc", "raCate": null}];
                <!-- 后面接一大堆js函数,巴拉巴拉巴拉...  -->
                function getResultsCount(){
                    return "1";
                }
            </script>
        </body>
        </html>
    """

    soup = BeautifulSoup(response_html_str, "html.parser")
    """
    #compile中的正则
        1."var indData ="表示我们需要开始截取的地方
        2."(.*?)"表示中间为任意字符串
        3.";$"表示第一个;结尾的地方结束
        4."re.MULTILINE",影响^与$ 锚点匹配的位置。
          没有开关,^并且$仅在整个文本的开头和结尾处匹配。使用该开关,它们也将在换行符之前或之后匹配
        5."re.DOTALL",re.DOTALL,影响.模式可以匹配的内容。
          如果没有切换,则.匹配除换行符之外的任何字符。通过该开关,换行符也将匹配
    """

    pattern = re.compile(r"var indData =(.*?);$", re.MULTILINE | re.DOTALL)
    script = soup.find('script', text=pattern)
    data_str = pattern.search(script.text).group(1)
    data_json = json.loads(data_str, strict=False)

结果如下:

 

 

标签:script,python,indData,re,html,str,var
From: https://www.cnblogs.com/Im-Victor/p/17616890.html

相关文章

  • excel wps宏编辑器,用JavaScript自定义函数设置单元格符合条件后,那一行都变色
        functionjudge(){varapp=Application;//WPS表格的应用程序对象varwb=app.ActiveWorkbook;//当前工作簿varsheet=wb.ActiveSheet;//当前工作表vardataRange=sheet.UsedRange;//使用的数据范围varnumRows=dataRange.Rows......
  • 【javascript】关于 AbortController
    相关概念:https://developer.mozilla.org/zh-CN/docs/Web/API/AbortController需求描述:后台返回10000条图片url,前端拿到后需要做成假分页,假设1页显示20张图,分成50页。部分逻辑:1for(leti=0;i<imgUrlList.length;i++){2letimage=newImage()3image.src=imgUrlLi......
  • python正则表达式的基本语法
    Python是一种广泛使用的高级编程语言,拥有丰富的库和工具,使得内容提取变得更加简单和高效。其中,正则表达式是一种非常重要的工具,Python提供了re模块来使用正则表达式进行内容提取。本文将为您介绍如何使用Python正则表达式进行内容提取的具体步骤。一、了解正则表达式的基本语法......
  • CefSharp (铬) javascript增加内存限制
    https://stackoverflow.com/questions/55099372 好了,伙计们,我已经想出了一个解决方案。当您将这些参数传递给chrome可执行文件以将javascript内存限制设置为16it时,chrome会将其设置为3.5it。--js-flags="--max_old_space_size=16384"复制似乎将内存大小设置为3.5GB以上......
  • vite+vue 在html中通过script引入的文件在使用时,部署后却无法获取文件中的方法
    今天在写项目的时候,遇到了一个奇怪的问题,我再html中使用script全局引入了一个js文件,但是在组件中使用window.xxx的时候却报错了,说没有这个方法,在本地几次测试都是好的。报错前相关版本:"@vitejs/plugin-vue-jsx":"^2.0.0","@vitejs/plugin-vue":"^2.2......
  • 查看python某些包中的方法介绍
    下面是关于如何查看Python函数参数的攻略。具体步骤如下:步骤1:查看函数文档首先,我们可以查看函数的文档来了解其参数。Python在函数内置文档中提供了对函数参数的详细描述。可以在交互式解释器中使用help()函数来查看函数文档,也可以使用__doc__属性来打印函数文档。同......
  • Python 爬虫实战:驾驭数据洪流,揭秘网页深处
    前言随着互联网的发展,数据变得越来越重要,爬虫技术也越来越受到人们的关注。爬虫技术可以帮助我们自动化地抓取网络数据,从而提高数据的利用价值。但是,在爬虫过程中,很容易被目标网站识别出来,甚至被封禁。所以,使用代理IP是非常重要的一步。本篇文章将介绍如何使用Python编写爬虫,并使......
  • python 文件夹遍历三种方法
    os.listdir(path),返回path目录下的文件夹和文件,但不包含子文件夹里的文件夹和文件递归遍历所有文件importosdefrecursive_listdir(path):files=os.listdir(path)forfileinfiles:file_path=os.path.join(path,file)ifos.path.isfile......
  • TypeScript中使用数组的filter方法
    constarr:string[]=['pom','皮蛋编程','非常厉害','太棒了'];constfilteredArr:string[]=arr.filter((str:string)=>{returnstr.includes('编程');});console.log(filteredArr);//["皮蛋编程"] ar......
  • vue import 调用方法 Import是javascript中的一种模块加载方式,在Vue中也可以使用impor
    vueimport调用方法Import是javascript中的一种模块加载方式,在Vue中也可以使用import来加载组件、库或其他模块。使用import语句,可以将需要的模块导入到当前模块的作用域中,以使其可用于当前模块内的执行。原文链接:https://www.yzktw.com.cn/post/1248672.htmlImport是javascri......