我正在尝试从 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">...