PowerShell网页抓取:无法获取特定新闻板块的Href链接
问题解答:抓取特定新闻标题对应的href链接
嘿,这个问题其实很好理清——你应该用GetElementsByTagName('a'),不过不是直接全局查找,而是在你已经定位到的标题div内部去查找,原因如下:
- 你之前定位的
latest_news_each_title类的div,只是新闻标题的容器,但网页里承载跳转链接的核心元素是<a>标签,这类链接标签通常嵌套在标题容器里。 - 如果直接全局调用
GetElementsByTagName('a'),会拿到页面上所有无关的链接(比如导航栏、侧边栏的链接),完全不符合你“只抓特定板块新闻链接”的需求。
给你调整后的代码示例,这样就能精准拿到对应标题的目标链接了:
# 获取目标页面的内容 $WebResponse = Invoke-WebRequest -Uri https://www.livesquawk.com/latest-news # 定位到目标标题div,再从中提取对应的href链接 $newsLinks = $WebResponse.ParsedHtml.DocumentElement.GetElementsByTagName('div') | Where { $_.ClassName -match 'latest_news_each_title' } | ForEach-Object { $_.GetElementsByTagName('a')[0].href } # 如果需要同时获取标题文本和对应链接,可以返回自定义对象: $newsItems = $WebResponse.ParsedHtml.DocumentElement.GetElementsByTagName('div') | Where { $_.ClassName -match 'latest_news_each_title' } | ForEach-Object { [PSCustomObject]@{ Title = $_.InnerText.Trim() Link = $_.GetElementsByTagName('a')[0].href } }
简单拆解下逻辑:
- 先筛选出所有包含目标标题的div,确保只处理你关注的新闻板块内容
- 对每个目标div,用
GetElementsByTagName('a')找到内部的链接标签,提取它的href属性(用[0]是因为每个标题容器里通常只有一个对应新闻的链接标签) - 如果需要同时保存标题和链接,返回自定义对象会更方便后续的筛选、导出等操作
内容的提问来源于stack exchange,提问作者iceman
相关产品推荐
相关产品推荐

