PowerShell 5里面有一个新的函数叫做ConvertFrom-String, 他的作用是把字符串转换成对象。其中一个参数是可以根据指定的模板,把对应的那一部分字符串匹配出来生成对象,我们可以利用这个功能抓取网页中的表格。
详细帮助文档链接
https://technet.microsoft测试数据/library/dn807178(v=wps.640).aspx
首先看个基本例子
$a=@'1 2 3 45 6 7 89 2 2 3'@$t=@'{Co1*:1} {Co2:2} {Co3:3} {Co4:4}{Co1*:5} 6 7 8'@$c=$a | ConvertFrom-String -Delimiter "\r\n"$d=$a | ConvertFrom-string -TemplateContent $t
同样的字符串,第一个我用分隔符回车换行来生成一个对象;第二个我用自定义的模板格式来进行匹配。注意属性定义的格式写法 {}隔开,然后第一个需要{属性名字*:},后面不需要加*,至少需要匹配2行数据才行。
可以看见第一个对象有3个属性,P1是1 2 3 4,P2 是 4 5 6 7 ,P3是9 2 2 3;
第二个对象则是根据每一列来自动匹配的(已经有一个模板匹配了前2行)
接下来我们来看2个实例。
第一个例子是这个网页,里面有一个澳洲代理服务器的列表,如下所示,我想抓出来
http://HdhCmsTestproxylisty测试数据/country/Australia-ip-list
基本思路:invoke-restmethod直接抓取整个网页,自动转换为string对象。
然后设计对应的模板。因为是html文件,转换为string以后对应的html代码都在里面。因此关键是怎么把这些带有html代码的表格模板弄出来。
很简单,网页都可以查看html的源代码,下面一大段html的代码可以直接从网页上复制粘贴对应的2行表格代码即可,稍加修改添加属性名字就行了。
然后根据模板匹配就会自动生成对应的表格对象了
$web = 'http://HdhCmsTestproxylisty测试数据/country/Australia-ip-list'$template = @' {IP*:203.56.188.145} {Port:8080} HTTP High anonymous / Elite proxy No Australia 13 Months 2.699 Sec{Reliability:50%}
查看更多关于PowerShell抓取网页表格_html/css_WEB-ITnose的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did112384