使用 Regex 搜索从 Invoke-WebRequest 检索的 HTML 数据



我正在尝试从 https://www.reuters.com/finance/stocks/lookup?searchType=any&comSortBy=marketcap&sortBy=&dateRange=&search=Accor 中抓取数据。

最终目标是拉下包含公司、代码和交易所的表格。

我已经成功获得了我需要的 HTML,但我无法从中提取我需要的数据。

我使用了一些在线正则表达式"助手",字符串工作正常并选择我需要的数据,但是当我尝试使用该命令时,它不起作用。

$web = Invoke-WebRequest -uri 'https://www.reuters.com/finance/stocks/lookup?searchType=any&comSortBy=marketcap&sortBy=&dateRange=&search=Accor' -UseBasicParsing
$str = ($web.Content).ToString()
[regex]$regex = '<table[sS]*?</table>'
$str | Select-String -Pattern $regex -AllMatches
$str > raw.txt; Select-String -Pattern $regex -Path ./raw.txt -AllMatches

我希望返回整个元素,但它在管道命令中返回完整的字符串,而在 -Path 命令中返回任何内容。

我也尝试使用 IE Com 对象执行此操作。

橡皮鸭效果。我一问就想通了...

$url = 'https://www.reuters.com/finance/stocks/lookup?searchType=any&comSortBy=marketcap&sortBy=&dateRange=&search=Accor'
$content = (New-Object System.Net.WebClient).DownloadString($url)
$content -match '<table[sS]*?</table>'
$matches
Name                           Value                                                                                                                                                                 
----                           -----                                                                                                                                                                 
0                              <table width="100%" cellspacing="0" cellpadding="1" class="search-table-data">... 

相关内容

  • 没有找到相关文章

最新更新