在网页抓取表格时回退值的问题

问题描述 投票:1回答:1

我试图从网页上的表格中提取文本。我使用Invoke-WebRequest拉取网页,将该变量设置为显示“AllElements”并尝试仅拉出与“Table”匹配的内部值;但是当我运行脚本时,没有任何内容被撤回,也没有显示任何错误。

$URI = 'https://www.python.org/downloads/release/python-2716/'

$R = Invoke-WebRequest -URI $URI

$R.AllElements|?{$_.Class -eq "table"}|select innerText

我希望在python.org网站上显示表的值,但是当脚本运行时,不会返回任何内容。

我该如何解决这个问题?

powershell web-scraping
1个回答
0
投票

那是因为没有表或表类,它是一个带有动态生成的有序列表项的div。您可以在浏览器开发人员工具中看到这一点,使用Edge中的F12或类似的Firefox,Chrome等...

$URI = 'https://www.python.org/downloads/release/python-2716'

$R = Invoke-WebRequest -URI $URI

$R.AllElements | 
Where {$_.Class -eq 'container' }


$R.AllElements | 
Where {$_.Class -eq 'list-row-container menu' }


($R.AllElements | 
Where {$_.class -eq 'list-row-container menu'}).innerText


($R.AllElements | 
Where {$_.Class -eq 'release-number' })


($R.AllElements | 
Where {$_.Class -eq 'release-number' }).outerHTML


(($R.AllElements | 
Where {$_.Class -eq 'release-number' }).outerHTML -split '<a href="|/">Python')[2]

或者只是这样做......

$R.Links
$R.Links.href
$R.Links.href -match 'downloads'
© www.soinside.com 2019 - 2024. All rights reserved.