返回顶部
首页 > 资讯 > 后端开发 > Python >Python怎么监视和衡量网站
  • 346
分享到

Python怎么监视和衡量网站

2023-06-16 11:06:10 346人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python怎么监视和衡量网站”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么监视和衡量网站”吧!网络重要指标简介5月初,Google推出了Core WEB

这篇文章主要讲解了“python怎么监视和衡量网站”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么监视和衡量网站”吧!

网络重要指标简介

5月初,Google推出了Core WEB Vitals,它是其关键Web Vitals指标的一部分。

这些指标用于提供有关网站上用户体验质量的指导。

Google将其描述为“帮助量化您的网站体验并确定改进机会”的一种方式,进一步强调了它们向关注用户体验的转变。

核心网络生命力是真实的,以用户为中心的指标,用于衡量用户体验的关键方面。加载时间,互动性和稳定性。

除此之外,Google  上周宣布,他们将引入一个新的搜索排名信号,它将这些指标与现有页面体验信号(例如移动设备友好性和https安全性)结合在一起,以确保它们继续为高质量网站提供服务给用户。

监控性能指标

预计此更新将于2021年推出,Google已确认不需要立即采取行动。

但是,为了帮助我们为这些更改做准备,他们更新了用于测量页面速度的工具,包括PSI,Google Lighthouse和Google Search  Console Speed Report。

Pagespeed Insights api从何入手?

Google的PageSpeed Insights是查看网页效果摘要的有用工具,它使用现场数据和实验室数据来生成结果。

这是获得少数URL概述的好方法,因为它是逐页使用的。

但是,如果您在大型站点上工作,并且希望获得大规模的见解,那么该API可以有利于一次分析多个页面,而无需单独插入URL。

用于衡量性能的Python脚本

我创建了以下Python脚本来大规模度量关键性能指标,以节省手动测试每个URL所花费的时间。

该脚本使用Python将请求发送到Google PSI API,以收集和提取在PSI和Lighthouse中显示的指标。

我决定在Google Colab中编写此脚本,因为这是开始编写Python并允许轻松共享的好方法,因此本文将使用Google  Colab贯穿整个安装过程。

但是,它也可以在本地运行,对数据的上传和下载进行一些调整。

请务必注意,某些步骤可能需要一些时间才能完成,尤其是当每个URL通过API运行时,为了不使请求过载。

因此,您可以在后台运行脚本,并在完成步骤后返回到脚本。

让我们逐步介绍启动和运行此脚本所需的步骤。

步骤1:安装所需的软件包

在开始编写任何代码之前,我们需要安装一些Python程序包,然后才能使用该脚本。这些使用导入功能很容易安装。

我们需要的软件包是:

  • urllib:用于处理,打开,阅读和解析URL。

  • JSON:允许您将jsON文件转换为Python或将Python文件转换为JSON。

  • request:一个Http库,用于发送各种HTTP请求。

  • pandas:主要用于数据分析和处理,我们正在使用它来创建DataFrames。

  • time:一个用于处理时间的模块,我们正在使用它在请求之间提供时间间隔。

  • 文件:通过Google Colab,您可以上传和下载文件。

  • io:用于访问文件的默认接口。

# Import required packages  import json import requests import pandas as pd import urllib import time from google.colab import files import io

第2步:设置API请求

下一步是设置API请求。完整的说明可以在这里找到,但是从本质上讲,该命令将如下所示:

  • https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={yourURL}/&strategy=mobile/&key={yourAPIKey}

这将允许您附加URL,策略(台式机或移动设备)和API密钥。

要在Python中使用它,我们将使用urllib请求库urllib.request.urlopen并将其添加到名为result的变量中,以便我们可以存储结果并在脚本中再次使用它们。

# Define URL   url = 'https://www.example.co.uk'  # API request url result = urllib.request.urlopen('https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={}/&strategy=mobile'\ .fORMat(url)).read().decode('UTF-8')  print(result)

步骤3:测试API

为了测试API的正确设置以及对测试过程中生成的内容的理解,我使用简单的urllib.request方法通过API运行了一个URL。

完成此操作后,我将结果转换为json文件并下载了它,以便查看结果。

# Convert to json format result_json = json.loads(result)  print(result_json)  with open('result.json', 'w') as outfile:   json.dump(result_json, outfile)  files.download('result.json')

(请注意,此方法用于在Google Colab中转换和下载JSON文件。)

步骤4:读取JSON档案

JSON文件显示字段数据(存储在loadingExperience下)和实验室数据(可以在lighthouseResult下找到)。

为了提取所需的指标,我们可以利用JSON文件的格式,因为我们能够看到每个部分下面的指标。

第5步:上传CSV并存储为Pandas数据框

下一步是上传我们要通过PSI API运行的URL的CSV文件。您可以通过抓取工具(例如DeepCrawl)生成站点URL的列表。

当我们使用API时,建议您在此处使用较小的URL示例集,尤其是在您拥有大型站点的情况下。

例如,您可以使用访问量最高的页面或产生最大收入的页面。另外,如果您的站点有模板,则非常适合测试其中的模板。

您还可以在此处添加column-header变量,我们将在遍历列表时使用该变量。确保此名称与您上传的CSV文件中的列标题名称匹配:

uploaded = files.upload() #if your column header is something other than 'url' please define it here  column_header='url'

(请注意,此方法用于在Google Colab中上传CSV文件。)

将其上传后,我们将使用Pandas库将CSV转换为DataFrame,我们可以在以下步骤中进行迭代。

# Get the filename from the upload so we can read it into a CSV. for key in uploaded.keys():   filename = key # Read the selected file into a Pandas Dataframe df = pd.read_csv(io.BytesIO(uploaded[filename]))  df.head()

DataFrame看起来像这样,从零索引开始。

步骤6:将结果保存到响应对象

下一步涉及使用for循环来迭代刚刚通过PSI API创建的URL的DataFrame。

for循环使我们可以遍历上载的列表并为每个项目执行命令。然后,我们可以将结果保存到响应对象中,并将其转换为JSON文件。

response_object = {}  # Iterate through the df for x in range(0, len(df)):          # Define request parameter         url = df.iloc[x][column_header]          # Make request         pagespeed_results = urllib.request.urlopen('https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={}&strategy=mobile'.format(url)).read().decode('UTF-8')          # Convert to json format         pagespeed_results_json = json.loads(pagespeed_results)          # Insert returned json response into response_object         response_object[url] = pagespeed_results_json         time.sleep(30)                  print(response_object[url])

我们将在此处使用范围内的x,它表示循环中正在运行的URL,以及(0,len)允许循环遍历DataFrame中的所有URL,无论包含多少个URL 。

该响应对象防止通过重写相互循环,你的网址,使我们能够保存数据以备将来使用。

这也是在将其转换为JSON文件之前,将使用列标题变量定义URL请求参数的地方。

我还将此处的睡眠时间设置为30秒,以减少连续进行的API调用次数。

另外,如果您希望更快地提出请求,则可以在URL命令的末尾附加一个API密钥。

缩进在这里也很重要,因为每个步骤都是for循环的一部分,因此必须在命令中缩进它们。

步骤7:创建一个数据框来存储响应

我们还需要创建一个DataFrame来存储我们要从响应对象中提取的指标。

DataFrame是类似于表的数据结构,具有存储数据的列和行。我们只需要为每个指标添加一列并适当地命名它,如下所示:

# Create dataframe to store responses df_pagespeed_results = pd.DataFrame(columns=           ['url',           'Overall_Category',           'Largest_Contentful_Paint',           'First_Input_Delay',           'Cumulative_Layout_Shift',           'First_Contentful_Paint',           'Time_to_Interactive',           'Total_Blocking_Time',           'Speed_Index'])    print(df_pagespeed_results)

出于此脚本的目的,我使用了Core Web Vital指标以及当前Lighthouse版本中使用的其他负载和交互性指标。

这些指标各自具有不同的权重,然后将它们用于总体绩效得分:

  • LCP

  • FID

  • CLS

  • FCP

  • TTI

  • TBT

您可以在上方链接的各个目标网页上找到有关每个指标的更多信息以及如何解释分数的信息。

我还选择包括速度指数和整体类别,这些类别将提供慢速,平均或快速得分。

步骤8:从响应对象中提取指标

保存响应对象后,我们现在可以对其进行过滤并仅提取所需的指标。

在这里,我们将再次使用for循环遍历响应对象文件,并设置一系列列表索引以仅返回特定指标。

为此,我们将从DataFrame中定义列名称,以及为每个URL从中提取每个指标的响应对象的特定类别。

for (url, x) in zip(     response_object.keys(),     range(0, len(response_object)) ):          # URLs         df_pagespeed_results.loc[x, 'url'] =\             response_object[url]['lighthouseResult']['finalUrl']          # Overall Category         df_pagespeed_results.loc[x, 'Overall_Category'] =\             response_object[url]['loadingExperience']['overall_category']             # Core Web Vitals               # Largest Contentful Paint             df_pagespeed_results.loc[x, 'Largest_Contentful_Paint'] =\         response_object[url]['lighthouseResult']['audits']['largest-contentful-paint']['displayValue']          # First Input Delay          fid = response_object[url]['loadingExperience']['metrics']['FIRST_INPUT_DELAY_MS']         df_pagespeed_results.loc[x, 'First_Input_Delay'] = fid['percentile']          # Cumulative Layout Shift             df_pagespeed_results.loc[x, 'Cumulative_Layout_Shift'] =\         response_object[url]['lighthouseResult']['audits']['cumulative-layout-shift']['displayValue']          # Additional Loading Metrics           # First Contentful Paint          df_pagespeed_results.loc[x, 'First_Contentful_Paint'] =\         response_object[url]['lighthouseResult']['audits']['first-contentful-paint']['displayValue']          # Additional Interactivity Metrics           # Time to Interactive           df_pagespeed_results.loc[x, 'Time_to_Interactive'] =\         response_object[url]['lighthouseResult']['audits']['interactive']['displayValue']          # Total Blocking Time            df_pagespeed_results.loc[x, 'Total_Blocking_Time'] =\         response_object[url]['lighthouseResult']['audits']['total-blocking-time']['displayValue']          # Speed Index         df_pagespeed_results.loc[x, 'Speed_Index'] =\         response_object[url]['lighthouseResult']['audits']['speed-index']['displayValue']

我已将此脚本设置为提取上面提到的关键指标,因此您可以立即使用它来收集此数据。

但是,可以提取在PSI测试以及Lighthouse分析中都可以找到的许多其他有用指标。

在此JSON文件可用于查看每个指标在列表中的位置。

例如,在从Lighthouse审核中提取指标(例如“互动时间”的显示值)时,将使用以下内容:

df_pagespeed_results.loc[x, 'Time_to_Interactive'] =\ response_object[url]['lighthouseResult']['audits']['interactive']['displayValue']

再一次,重要的是要确保每一个都位于循环中,否则它们将不会包含在迭代中,并且只会为一个URL生成一个结果。

步骤9:将DataFrame转换为CSV文件

最后一步是创建一个摘要文件以收集所有结果,因此我们可以将其转换为易于分析的格式,例如CSV文件。

summary = df_pagespeed_results  df_pagespeed_results.head()  #Download csv file  summary.to_csv('pagespeed_results.csv') files.download('pagespeed_results.csv')

(请注意,此方法用于在Google Colab中转换和下载CSV文件。)

进一步探索数据

目前,我们导出的所有指标都存储为字符串,这是用于文本和字符的Python数据类型。

由于我们提取的某些指标实际上是数字值,因此您可能希望将字符串转换为数字数据类型,例如整数和浮点数。

整数,也称为int,是整数的数据类型,例如1和10。

浮点数,也称为浮点数,是十进制点数,例如1.0和10.1。

为了将字符串转换为数字,我们需要执行两个步骤,第一步是将's'字符(用于表示秒)替换为空格。

我们通过在每列上使用.str.replace方法来执行此操作。

#Replace the 's' with a blank space so we can turn into numbers df_pagespeed_results['Largest_Contentful_Paint'] = df_pagespeed_results.Largest_Contentful_Paint.str.replace('s', '') df_pagespeed_results['First_Contentful_Paint'] = df_pagespeed_results.First_Contentful_Paint.str.replace('s', '') df_pagespeed_results['Time_to_Interactive'] = df_pagespeed_results.Time_to_Interactive.str.replace('s', '') df_pagespeed_results['Total_Blocking_Time'] = df_pagespeed_results.Total_Blocking_Time.str.replace('ms', '') df_pagespeed_results['Speed_Index'] = df_pagespeed_results.Speed_Index.str.replace('s', '')

然后,我们将使用.astype()方法将字符串转换为整数或浮点数:

#Turn strings into intergers or floats df_pagespeed_results['Largest_Contentful_Paint'] = df_pagespeed_results.Largest_Contentful_Paint.astype(float) df_pagespeed_results['Cumulative_Layout_Shift'] = df_pagespeed_results.Cumulative_Layout_Shift.astype(int) df_pagespeed_results['First_Contentful_Paint'] = df_pagespeed_results.First_Contentful_Paint.astype(float) df_pagespeed_results['Time_to_Interactive'] = df_pagespeed_results.Time_to_Interactive.astype(float) df_pagespeed_results['Speed_Index'] = df_pagespeed_results.Speed_Index.astype(float)

完成此操作后,您可以使用多种不同的方法进一步评估数据。

例如,您可以使用数据可视化库(例如matplotlib或seaborn)来可视化指标,以及测量指标如何随时间变化并将结果分组为慢速,中速和快速存储桶。

感谢各位的阅读,以上就是“Python怎么监视和衡量网站”的内容了,经过本文的学习后,相信大家对Python怎么监视和衡量网站这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python怎么监视和衡量网站

本文链接: https://www.lsjlt.com/news/283396.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python怎么监视和衡量网站
    这篇文章主要讲解了“Python怎么监视和衡量网站”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么监视和衡量网站”吧!网络重要指标简介5月初,Google推出了Core Web...
    99+
    2023-06-16
  • python实现批量监控网站
    最近又新上了一部分站点,随着站点的增多,管理复杂性也上来了,俗话说:人多了不好带,我发现站点多了也不好管,因为这些站点里有重要的也有不重要的,重要核心的站点当然就管理的多一些,像一些万年都不出一次问题的,慢...
    99+
    2022-06-04
    批量 网站 python
  • 怎么在Linux中安装vnStat和vnStati监视网络流量
    这篇文章主要介绍怎么在Linux中安装vnStat和vnStati监视网络流量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VnStat是针对Linux和BSD的基于控制台的网络流量监视工具设计。它将保留所选网络接口...
    99+
    2023-06-15
  • python爬虫爬网站的视频和图片
    环境:centos6.5 python2.6.6   http://www.budejie.com/( 纯属测试,并无恶意 )网站分析:我们点视频按钮 可以看到url是:http://www.budejie.com/video/接着我们点开...
    99+
    2023-01-31
    爬虫 图片 网站
  • 大型网站负载均衡怎么配置
    大型网站负载均衡可以通过以下步骤进行配置:1. 选择负载均衡器:选择适合你需求的负载均衡器,常见的有硬件负载均衡器和软件负载均衡器。...
    99+
    2023-09-07
    负载均衡
  • php 项目网站怎么实现负载均衡?
    负载均衡是一种通过分担请求以保证系统可用性和稳定性的技术。在 PHP 项目网站中,可以使用以下几种方法实现负载均衡: 软件负载均衡:使用软件如 HAProxy、Nginx 等实现负载均衡,将请求转发到多个后端服务器上。 硬件负载均衡:使...
    99+
    2023-09-08
    负载均衡 php 服务器 Powered by 金山文档
  • 浅析php网站怎么实现负载均衡
    在今天的互联网应用程序中,瓶颈与负载问题已经成为了必须重点关注的问题。如果网站用户访问量过大,服务器很快就会无法承受负荷,从而造成网站崩溃,导致用户无法访问。此时,负载均衡技术就会发挥作用。负载均衡是将负载均摊到多台服务器上,以达到增加吞吐...
    99+
    2023-05-14
    php
  • linux下怎么监控网络流量
    本篇内容主要讲解“linux下怎么监控网络流量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux下怎么监控网络流量”吧!我看了下,linux下的/proc/net/dev记录了每块网卡发送...
    99+
    2023-06-09
  • 海外网络服务器怎么确保网站平衡迁移
    海外网络服务器确保网站平衡迁移的方法:1、对网站程序和数据库数据进行备份,以免数据丢失;2、把备份好的数据确保上传至新的海外服务器;3、把域名解析到新海外服务器ip,添加网站404、301正常使用;4、观察网站日志,及时了解蜘蛛的抓取情况,...
    99+
    2024-04-02
  • Python怎么批量下载阴阳师网站壁纸
    这篇文章给大家分享的是有关Python怎么批量下载阴阳师网站壁纸的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最终版本# 引入系统类库用于打开关闭文件import sys# 使用文档...
    99+
    2023-06-15
  • 使用Python进行网站数据爬取和视频处理
    导语 在互联网时代,我们经常需要从网站上获取数据并进行分析或处理。有时候,我们还需要对视频数据进行一些操作,比如剪辑、转码、合成等。Python是一门非常适合做数据分析和视频处理的编程语言,它有很多...
    99+
    2023-09-04
    python 网络爬虫 requests 爬虫代理 视频处理 moviepy 数据爬取
  • 怎么监视和优化DynamoDB表的性能
    监视和优化DynamoDB表的性能可以通过以下几种方法来实现: 使用CloudWatch监控:DynamoDB表可以与Cloud...
    99+
    2024-04-02
  • 视频网站空间不足怎么解决
    如果您是网站管理员,可以考虑以下解决方法:1. 压缩视频文件:使用视频压缩软件将视频文件压缩,减小文件大小,从而节省空间。2. 删除...
    99+
    2023-05-25
    视频网站空间 空间
  • 怎么用Python监控你的朋友都在浏览哪些网站
    小编给大家分享一下怎么用Python监控你的朋友都在浏览哪些网站,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、需求获取你对象chrome前一天的浏览记录中的所有网址(url)和访问时间,并存在一个txt文件中将这个tx...
    99+
    2023-06-15
  • prometheus怎么监测服务器上网流量
    要监测服务器上的网络流量,您可以使用Prometheus结合Grafana等监控工具来实现。以下是一些步骤: 安装和配置Prom...
    99+
    2024-03-14
    prometheus 服务器
  • python怎么查网站漏洞
    python查网站漏洞的方法:使用Python脚本实现Web漏洞扫描工具,代码如下:#!-*-coding:UTF-8-*- import optparse, random, re, string, urllib, urllib2,diff...
    99+
    2024-04-02
  • 怎么用python爬取网站
    使用Python爬取网站的一般步骤如下:1. 导入所需的库,如`requests`或`urllib`用于发送HTTP请求,`beau...
    99+
    2023-08-31
    Python
  • python怎么搭建web网站
    要搭建一个Web网站,你可以使用Python的一些框架来简化开发过程。以下是一些流行的Python Web框架:1. Django:...
    99+
    2023-09-08
    python
  • 怎么用python搭建网站
    要使用Python搭建网站,可以使用一个Python的Web框架,例如Django或Flask。下面是使用Flask框架搭建网站的基本步骤:1. 安装Flask:在终端或命令提示符中,输入以下命令安装Flask:```pip insta...
    99+
    2023-08-11
    python
  • 视频网站怎么选择服务器配置
    视频网站选择服务器配置的方法:1、硬件配置上的选择,选择多线程的多核CPU,内存16G以上,1TB以上的硬盘,根据视频系统的平台选择windows和linux,采用raid架构更稳定;2、线路上的选择,看观众主要的分布地区选择合适的服务器线...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作