IIS日志-网站运维的好帮手

news/2024/5/11 0:19:50/文章来源:https://blog.csdn.net/weixin_34292924/article/details/94030198

对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情。 有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的。 还有些时候,我们希望不断地优化网站,让网站更快速的响应用户请求, 这些事情都发生在开发之后的运维阶段。

与开发阶段不同的,运维阶段不可能让你去调试程序,发现各类问题, 我们只能通过各种系统日志来分析网站的运行状况, 对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题, 或者存在哪些需要改进的地方。

回到顶部

IIS日志包含了哪些信息

我前面说到【IIS日志提供了最有价值的信息】,这些信息有哪些呢?看看这个截图吧:

这里面记录了: 1. 请求发生在什么时刻, 2. 哪个客户端IP访问了服务端IP的哪个端口, 3. 客户端工具是什么类型,什么版本, 4. 请求的URL以及查询字符串参数是什么, 5. 请求的方式是GET还是POST, 6. 请求的处理结果是什么样的:HTTP状态码,以及操作系统底层的状态码, 7. 请求过程中,客户端上传了多少数据,服务端发送了多少数据, 8. 请求总共占用服务器多长时间、等等。

这些信息在分析时有什么用途,我后面再说。先对它有个印象就可以了。

回到顶部

IIS日志的配置

默认情况下,IIS会产生日志文件,不过,还是有些参数值得我们关注。IIS的设置界面如下(本文以 IIS 8 的界面为例)。

在IIS管理器中,选择某个网站,双击【日志】图标,请参考下图:

此时(主要部分)界面如下:

在截图中,日志的创建方式是每天产生一个新文件,按日期来生成文件名(这是默认值)。 说明:IIS使用UTC时间,所以我勾选了最下面的复选框,告诉IIS用本地时间来生成文件名。

点击【选择字段】按钮,将出现以下对话框:

注意:【发送的字段数】和【接收的字节数】默认是没有选择的。建议勾选它们。 至于其它字段,你可以根据需要来决定是否要勾选它们。

回到顶部

如何分析IIS日志

如果你按照我前面介绍的方法设置了IIS日志参数,那么IIS在处理请求后(的一段时间之后),会生成IIS日志。 我们可以在【日志界面】的右边区域【操作】中点击【查看日志文件】快速定位到IIS日志的根目录, 然后到目录中寻找相应的日志文件(默认会根据应用程序池序号来区分目录)。

比如:我找到了我需要的日志:

这个文件一大堆密密麻麻的字符,现在我该如何分析它呢?

有个叫 Log Parser 的工具就可以专门解析IIS日志,我们可以用它来查看日志中的信息。 比如我可以运行下面的命令行(说明:为了不影响页面宽度我将命令文本换行了):

"C:\Program Files\Log Parser 2.2\LogParser.exe" -i:IISW3C -o:DATAGRID 
"SELECT c-ip,cs-method,s-port,cs-uri-stem,sc-status,sc-win32-status,
sc-bytes,cs-bytes,time-taken FROM u_ex130615.log"

现在就可以以表格形式来阅读IIS日志了:

 

说明:我不推荐用这种方法来分析IIS日志,原因有二点: 1. 慢:当日志文件稍大一点的时候,用它来分析就比较浪费时间了(尤其是需要多次统计时)。 2. 不方便:它支持的查询语法不够丰富,没有像SQL Server针对数据表查询那样全面。

回到顶部

推荐的IIS日志分析方法

虽然Log Parser支持将解析的IIS日志以表格形式供人阅读,但是有时候我们需要再做一些细致分析时,可能会按不同的方式进行【多次】查询, 对于这种需求,如果每次查询都直接运行Log Parser,你会浪费很多时间。 幸运的是,Log Parser支持将解析结果以多种格式导出(以下为帮助文档截图):

在此,我建议选择输出格式为 SQL 。 注意:这里的SQL并不是指SQLSERVER,而是指所有提供ODBC访问接口的数据库。 我可以使用下面的命令将IIS日志导入到SQLSERVER中(说明:为了不影响页面宽度我将命令文本换行了):

"C:\Program Files\Log Parser 2.2\logparser.exe"  
"SELECT  *  FROM  'D:\Temp\u_ex130615.log'  to MyMVC_WebLog" -i:IISW3C -o:SQL 
-oConnString:"Driver={SQL Server};server=localhost\sqlexpress;database=MyTestDb;Integrated Security=SSPI" 
-createtable:ON

导入完成后,我们就可以用熟悉的SQLSERVER来做各种查询和统计分析了,例如下面的查询:

SELECT cip,csmethod,sport,csuristem,scstatus,scwin32status,scbytes,csbytes,timetaken 
FROM dbo.MyMVC_WebLog

如果如下:

注意: 1. IIS日志在将结果导出到SQLSERVER时,字段名中不符合标识符规范的字符将会删除。    例如:c-ip 会变成 cip, s-port 会变成 sport 。 2. IIS日志中记录的时间是UTC时间,而且把日期和时间分开了,导出到SQLSERVER时,会生成二个字段:   

date, time这二个字段看起来很不舒服,对吧? 我也很反感这个结果,下面来说说的二种解决方法:

1. 在SQLSERVER中增加一列,然后把UTC时间换成本地时区的时间,T-SQL脚本如下:

alter table MyMVC_WebLog add RequestTime datetime
go
update MyMVC_WebLog set RequestTime=dateadd(hh,8,convert(varchar(10),date,120) + ' ' + convert(varchar(13),time,114))

2. 直接在导出IIS日志时,把时间转换过来,此时要修改命令:

"C:\Program Files\Log Parser 2.2\logparser.exe"  
"SELECT TO_LOCALTIME(TO_TIMESTAMP(ADD(TO_STRING(date, 'yyyy-MM-dd '), TO_STRING(time, 'hh:mm:ss')), 
'yyyy-MM-dd hh:mm:ss')) AS RequestTime, *  FROM  'D:\Temp\u_ex130615.log'  to  MyMVC_WebLog2" 
-i:IISW3C -o:SQL 
-oConnString:"Driver={SQL Server};server=localhost\sqlexpress;database=MyTestDb;Integrated Security=SSPI"
-createtable:ON

再看这三列:

select RequestTime, date, time from MyMVC_WebLog2

这样处理后,你就可以直接把date, time这二列删除了(你也可以在导出IIS日志时忽略它们,但要明确指出每个字段名)。

IIS日志中的UTC时间问题就说到这里,但愿每个人都懂了~~~~~~~~~~~

回到顶部

IIS日志中的异常记录

IIS日志中记录了每个请求的信息,包括正常的响应请求和有异常的请求。

这里所说的【异常】与 .net framework 中的异常没有关系。 对于一个ASP.NET程序来说,如果抛出一个未捕获异常,会记录到IIS日志中(500),但我所说的异常不仅限于此。

本文所说的异常可分为四个部分: 1. (ASP.NET)程序抛出的未捕获异常,导致服务器产生500的响应输出。 2. 404之类的请求资源不存在错误。 3. 大于500的服务器错误,例如:502,503 4. 系统错误或网络传输错误。

前三类异常可以用下面的查询获得:

select scStatus, count(*) AS count, sum(timetaken * 1.0) /1000.0 AS sum_timetaken_second
from MyMVC_WebLog with(nolock)
group by scStatus
order by 3 desc

IIS日志中有一列:sc-win32-status ,它记录了在处理请求过程中,发生的系统级别错误,例如网络传输错误。 正常情况下,0 表示正常,出现非零值意味着出现了错误。我们可以这样统计这类错误:

declare @recCount bigint;
select @recCount = count(*) from MyMVC_WebLog with(nolock)
select scWin32Status, count(*) AS count, (count(*) * 100.0 / @recCount) AS [percent] 
from MyMVC_WebLog with(nolock)
where scWin32Status > 0
group by scWin32Status
order by 2 desc

下表列出了比较常见的与网络相关的错误及解释:

scWin32Status含义
64客户端连接已关闭(或者断开)
121传输超时
1236本地网络中断

所有状态码都可以通过下面的命令来获取对应的解释:

D:\Temp>net helpmsg 64指定的网络名不再可用。

关于scwin32status与scStatus,我还想补充说明一下:它们没有关联。 比如请求这个地址:http://www.abc.com/test.aspx 有可能scStatus=200,但scwin32status=64,此时表示ASP.NET已成功处理请求,但是IIS在发送响应结果时,客户端的连接断开了。 另一种情况是:scStatus=500,但scwin32status=0,此时表示,在处理请求过程中发生了未捕获异常,但异常结果成功发送给客户端。

回到顶部

再谈 scwin32status=64

记得以前看到 scStatus=200,scwin32status=64 这种情况时很不理解,于是搜索了互联网,各种答案都有,有的甚至说与网络爬虫有关。 为了验证各种答案,我做了一个试验。我写一个ashx文件,用它来模拟长时间的网络传输,代码如下:

public class Test_IIS_time_taken : IHttpHandler {public void ProcessRequest (HttpContext context) {context.Response.ContentType = "text/plain";System.Threading.Thread.Sleep(1000 * 2);context.Response.Write(string.Format("{0}, {1}\r\n", "Start", DateTime.Now));context.Response.Flush();System.Threading.Thread.Sleep(1000 * 2);for( int i = 0; i < 20; i++ ) {context.Response.Write(string.Format("{0}, {1}\r\n", i, DateTime.Now));context.Response.Flush();System.Threading.Thread.Sleep(1000 * 1);}context.Response.Write("End");}

这段代码很简单,我不想做过多的解释,只想说一句:我用Thread.Sleep与Response.Flush这二个方法来模拟一个长时间的持续发送过程。

我们可以在浏览器中看到这样的输出(显示还没有完全结束时我截图了)

我把这个测试做了8次,只有2次是全部显示完成了,其余6次我提前关闭了浏览器窗口。 然后,我们再来看IIS日志的内容:

根据IIS日志并结合我自己的操作可以发现: 1. 当我提前关闭浏览器窗口时,就会看到scStatus=200,scwin32status=64 2. 如果请求内容全部显示完成,我就会看到scStatus=200,scwin32status=0 从这个试验我们还可以发现:timeTaken 包含了网络传输时间。

根据这个试验的结果,你是否想过一个问题: 如果你的网站的IIS日志中出现了大量的scStatus=200,scwin32status=64, 而且请求是由用户的浏览器发起的。 这是什么原因造成的呢? 我的【猜想】是:用户在访问这个网站时已经不愿意再等待了,他们把浏览器窗口关掉了。 换句话说:可以从scwin32status=64的统计结果看出网站的响应速度是否能让用户满意。

回到顶部

寻找性能问题

IIS日志中有一列叫:timeTaken,在IIS的界面中显示了它的含义:所有时间。 这个所用时间的定义是:从服务端收到请求的第一个字节开始起,直到把所有响应内容发送出去为止的时间。 微软的网站有对这个字段做过说明:http://support.microsoft.com/kb/944884

知道了timeTaken的定义后,我们就可以利用它来分析一些请求的处理时间,即性能分析。

例如,我想查看最慢的20个页面的加载情况,可以这样查询:

select top 20 csuristem,scstatus,scwin32status,scbytes,csbytes,timetaken
from dbo.MyMVC_WebLog with(nolock)
where csUriStem like '/Pages/%'
order by timeTaken desc

再或者我想再看看最慢的20个AJAX情况的响应情况,可以这样查询:

select top 20 csuristem,scstatus,scwin32status,scbytes,csbytes,timetaken
from dbo.MyMVC_WebLog with(nolock)
where csUriStem like '/ajax/%'
order by timeTaken desc

总之,寻找性能问题的方法就是:在查询选择timeTaken字段,并且用它做降序排序。

注意:scbytes,csbytes 这二个字段也是值得我们关注的: 1. csbytes如果过大,我们就要分析一下到底是不是因为表单包含了过多的无用数据,可否将表单拆分。    csbytes变大还有一种可能:Cookie太大,但它会表现为很多请求的csbytes都偏大,因此容易区分。 2. scbytes如果过大,我们就要检查页面是否没有分页,或者可以考虑用按需加载的方式来实现。 典型的情况是:当大量使用ViewState时,这二个值都会变大。因此我们能通过IIS日志发现ViewState的滥用问题。 还有一种特殊情况是:上传下载文件也会导致这二个数值变大,原因我就不解释了。

scbytes,csbytes,不管是哪个数值很大,都会占用网络传输时间,对于用户来说,就需要更长的等待时间。

一下子说了三个字段,在寻找性能问题时,到底该参考哪个呢? 我认为:应该优先关注timeTaken,因为它的数值直接反映了用户的等待时间(不包括前端渲染时间)。 如果timeTaken过大时,有必要检查scbytes,csbytes是否也过大, 如果后二者也过大,那么优化的方向就是减少数据传输量,否则表示是程序处理占用了大量的时间,应该考虑优化程序代码。

回到顶部

寻找可改进的目标

除了可以从IIS日志中发现性能问题,还可以用它来寻找可改进的目标。 例如: 1. 有没有404错误? 2. 是否存在大量的304请求? 3. 是否存在大量重复请求?

当发现有404响应时,我们应该分析产生404的原因: 1. 是用户输入错误的URL地址吗? 2. 还是开发人员引用不存在的资源文件? 如果是后者,就应该尽快移除无效的引用,因为404响应也是一个页面响应,而且它们也会占用网络传输时间, 尤其是这类请求不能缓存,它会一直出现,浪费网络资源。

如果你希望在开发阶段就能轻易的发现404错误,可以参考我的博客:程序在发布前就应该发现的一些错误

如果发现有大量的304请求也应该仔细分析: 1. 是由于ASP.NET缓存响应而产生的304请求吗? 2. 还是请求静态资源文件时产生的304请求? 如果是后者,则有可能与浏览器的设置有关,也有可能与IIS设置有关。

IIS有个【启用内容过期】功能,可用来在输出响应时设置缓存头,减少请求数量。 此功能对静态文件有用,ASP.NET处理的结果则不受影响。 具体设置方法可参考:不修改代码就能优化ASP.NET网站性能的一些方法

我们可以用这样的查询来分析页面的加载频率:

select top 20 csUriStem, count(*) AS [count],avg(timeTaken) AS avg_timeTaken, max(timeTaken) AS max_timeTaken
from MyMVC_WebLog with(nolock)
where csUriStem like '/Pages/%'
group by csUriStem
order by 2 desc

如果发现有大量的重复请求,也需要再仔细分析: 1. 请求的响应内容是否随着不同的参数而各不相同? 2. 请求的URL是固定的,响应内容也是极少变化的。 如果是后者,则可以考虑使用页面缓存功能。例如:ASP.NET的OutputCache

我的博客不修改代码就能优化ASP.NET网站性能的一些方法介绍了一种不用修改代码就能缓存请求的功能,如果需要,可以试试。

回到顶部

程序架构对IIS日志分析过程的影响

前面我介绍了一些分析IIS日志的方法,这些方法的使用都离不开查询。 绝大多数时候,我们需要在查询中输出URL信息(cs-uri-stem)并依据它们分组来统计, 因此,合理的设计URL会给后期的统计带来方便, 也能得到更准确的统计结果。一个极端的反例是:采用WebForms默认的开发方式,页面加载以及每个按钮的提交都是同一个URL,你会发现很难统计用户的每个操作花了多少时间。

怎样的URL设计才能满足统计需要呢? 我认为:每个用户操作(页面显示或者提交)都应该有一个URL与之对应,且不同的URL能反映不同的操作。 另外还建议:不同的用户操作能在URL中清楚的区分开,这样能方便做更多的统计(例如:页面加载,AJAX请求,报表显示)。

虽然我们可以用timeTaken来做性能统计,然而,当你在程序中大量使用frameset或者iframe时, 你将难以统计某个页面(包含iframe的页面)加载到底花了多长时间。 因为整个页面被分成了多个请求,它们在IIS日志中并不是连续的,你无法准确地按用户请求来统计。 例如:a1.aspx用iframe的方式嵌入了b1.aspx, b2.aspx, b3.aspx,当你统计a1.aspx的加载时间时, 你得到的结果永远和用户感受的情况不一样,因为a1.aspx的timeTaken并不包含b1.aspx, b2.aspx, b3.aspx这三个请求的timeTaken!

因此,如果你希望利用IIS日志来分析程序性能,那么iframe就不要再使用了。

转载:http://www.cnblogs.com/fish-li/p/3139366.html

转载于:https://www.cnblogs.com/armyfai/p/3545320.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_786776.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享32个超棒的实用移动网站(mobile website)布局设计

日期&#xff1a;2012-4-16 来源&#xff1a;GBin1.com 移动互联现在已经成为了互联网的新贵&#xff0c;我们不得不考虑如何更好的设计移动互联网。过去5到10年中基本上没有开发设计人员为移动设备设计UI。而到现在几乎每个人都使用智能手机来浏览互联网了。现在是大家认真考…

企业网站 源码 服务邮箱:_企业邮箱申请注册的要求有哪些?_网站建设_创客网络...

随着现在互联网信息化发展的速度不断加快&#xff0c;企业邮箱作为企业之间信息传输的重要工具&#xff0c;其重要性不亚于企业网站&#xff0c;但市场上企业邮箱种类繁多&#xff0c;包含的功能也各不相同&#xff0c;稍有差异&#xff0c;你知道怎么去选择好企业邮箱吗&#…

网站弹窗代码_购物网站设计:做一个实用的电子商务网站

随着线上经济发展&#xff0c;很多企业和商家都有了建立自己的电子商务网站的需求。但是如何让自己的电商购物网站发挥作用&#xff0c;吸引客户下单呢&#xff1f;今天就跟大家科普下电子商务网站设计原理&#xff0c;你需要这样设计电商网站才行&#xff1a;1.商城优惠一个新…

实现基于lnmp的电子商务网站

今天带给大家的是一个实战项目&#xff0c;主要是让大家了解在我们接到一个项目时&#xff0c;我们该怎样做好这个项目&#xff0c;下面看具体内容&#xff1a; 技术说明 LNMP代表的就是&#xff1a;Linux系统下NginxMySQLPHP这种网站服务器架构。 企业级电子商务网站大多是是基…

降本增效|网站性能监控平台监控宝背后功能解读

背景介绍 现如今&#xff0c;云计算技术的广泛应用&#xff0c;让越来越多的传统企业将核心业务部署或迁移到云端。然而&#xff0c;尽管传统企业在上云方面花费巨大&#xff0c;结果却往往很难达到预期。异常复杂的网络接入、链路质量、机房环境都给企业的互联网业务健康带来…

Thinkphp框架搭建手机网站视频教程

2019独角兽企业重金招聘Python工程师标准>>> 我赢职场全球经典Thinkphp框架搭建网站功能&#xff0c;用户登录后&#xff0c;如何在前台显示相应的用户名 连接地址&#xff1a;http://dwz.cn/z9NBy[摘要] 代码中的函数 is_mobile来源于网上&#xff0c;写得挺好的。…

2天内重复访问网站的用户个数,以IP个数为准

今天看到了comm这个命令&#xff0c;解释说可以对比出两个文件中的相同部分 随即&#xff0c;我截取了2016年3月2号&#xff0c;3号每天的总IP&#xff0c;单独存放到一个文件中&#xff0c;名称分别为log02,log03 截取出来的IP我已经进行去除重复&#xff0c;并进行了排序&…

iis7.0如何配置https与ssl安全类型网站

在IIS 7.0 和IIS 6.0中配置SSL的高级别步骤基本相同&#xff1a; 获取合适的证书 在网站创建HTTPS连接 通过向该网站发送请求来进行测试 选择性地配置SSL选项&#xff0c;例如将SSL作为必要条件 本文提供了一些有用的信息&#xff0c;以及如何利用不同的方式启用SSL&#xff1a…

AIBigData four:使用scrapy爬取网站,按照指定的格式存入txt文本的详细过程复盘

用了将近两个星期&#xff0c;终于对scrapy有了初步了解&#xff0c;并且使用scrapy来爬取到了动态加载的网页。再此给自己这两周的学习成果做一个详细的过程复盘&#xff0c;顺带重温下忘掉的知识。 首先看看项目要求。要爬取的是左边的四个大板块里的四个小版块的文章&#x…

使用scrapy做爬虫遇到的一些坑:网站常用的反爬虫策略,如何机智的躲过反爬虫Crawled (403)

在这幅图中我们可以很清晰地看到爬虫与反爬虫是如何进行斗智斗勇的。 在学习使用爬虫时&#xff0c;我们制作出来的爬虫往往是在“裸奔”&#xff0c;非常的简单。 简单低级的爬虫有一个很大的优点&#xff1a;速度快&#xff0c;伪装度低。如果你爬取的网站没有反爬机制&#…

马云称自己的成就无关科技与钱;任正非:外籍员工可当华为 CEO,但有条件;雅虎宣布逐步关闭雅虎群组网站 | EA周报...

EA周报2019年10月18日每个星期7分钟&#xff0c;元宝带你喝一杯IT人的浓缩咖啡&#xff0c;了解天下事、掌握IT核心技术。热点大事件丰巢回应小学生用照片“刷脸”取件&#xff1a;测试版&#xff0c;已第一时间下线有报道称“小学生发现丰巢快递柜刷脸取件漏洞&#xff0c;用照…

学习nginx所遇到的坑:Mac如何在nginx上创建新的网站?

首先&#xff0c;掌握基本的知识。 改配置文件&#xff1a; vi /usr/local/etc/nginx/nginx.conf 改html文件&#xff1a;vi /usr/local/Cellar/nginx/1.15.8/html/**.html 重启nginx: nginx -s reload -c 首先改动配置文件 &#xff0c;找到以下图片中的代码 从注释中我们…

第一次上传成功jsp网站总结

今天费了一下午功夫才上传成功一个jsp网站&#xff0c;现在总结下&#xff1a; 一般jsp网站分为两部分&#xff1a;1&#xff0c;网站部分 2&#xff0c;数据库部分。 要想在外网看到自己上传的jsp网站&#xff1a; 1&#xff0c;要有一个域名和空间&#xff0c;我今天用的是…

部署 HSTS 提升网站安全性

什么是 HSTS&#xff1f; HSTS 是 HTTP Strict Transport Security 的缩写&#xff0c;字面意思就是“HTTP 严格传输安全”。在 2012 年 11 月发布了RFC 文件。其实质&#xff0c;是通过服务器和浏览器配合起来&#xff0c;强制用户使用安全连接来访问服务器。 HSTS 大致原理…

网站搭建 -- 部署Https 证书 缺少 Root CA Certificate

测试网站 我们在搭建web站点时&#xff0c;为了安全&#xff0c;现在都要使用SSL证书。 一个好用的测试网站可以检测你的SSL配置是否正确。 https://www.geocerts.com/ssl-checker 该网站可以自定义检测的端口&#xff08;大部分检测网站都只能使用默认端口443&#xff09;…

揭秘DDoS黑市:50块钱就能击瘫一家网站

前两天&#xff0c;阿里云在微博上发布一则声明&#xff0c;称12月20-21日间&#xff0c;部署在阿里云上的某知名游戏公司&#xff0c;遭遇了全球互联网史上最大的一次DDoS攻击。 DDoS是一种在互联网地下非常常见的攻击方式&#xff0c;可以称作黑客入门的基础技巧。但要做到像…

WordPress开发之创建WordPress会员网站(一)

问题 Wordpress是世界范围内广泛推荐的网站开发平台&#xff0c;尽管创建一个基于WordPress的基础型博客网站是一个一小时左右就能完成的工作&#xff0c;但是&#xff0c;要想把这个网站进一步完善&#xff0c;特别是把WordPress网站修改成一个真正意义上的中小型电子商务网站…

HTML5初学者福利!11个在线学习网站推荐

2019独角兽企业重金招聘Python工程师标准>>> HTML5的强大及流行趋势&#xff0c;让更多的人想要系统的对它进行学习。而大多数人获取HTML5知识的重要途径都是网络&#xff0c;不过面对五花八门的搜索结果&#xff0c;是不是觉得摸不着头脑&#xff0c;无法抉择&…

Scrapy和Django实现蚌埠医学院手机新闻网站制作

最终效果&#xff08;不看效果就讲过程都是耍流氓&#xff09;&#xff1a; 实现过程如下: 框架&#xff1a; Scrapy&#xff1a;数据采集Django&#xff1a;数据呈现目标网站&#xff1a;蚌埠医学院 学院新闻列表:http://www.bbmc.edu.cn/index.php/view/viewcate/0/ 第一步&a…

收集喜欢的网站元素

1、https://letters-inc.jp/2、https://clarity.io/。。。