【问题标题】:Powershell - How can I extract the element of local html files using XPathPowershell - 如何使用 XPath 提取本地 html 文件的元素
【发布时间】:2020-03-03 03:49:08
【问题描述】:

我正在尝试从 IMDB 网站上抓取一些数据。我要提取的数据是一些电影的片名(电影名)、上映年份和剧情概要。我已将要提取的所有页面批量下载到硬盘驱动器,当我在 Google Chrome 上检查要提取的页面元素时,其完整的 XPath 选择器类似于电影名称:

/html/body/div[3]/div/div[2]/div[5]/div[1]/div/div/div[1]/div[2]/div/div[2]/div[2]/h1/text()

我花了时间找到问题的代码,但没有答案(据我所知)。我正在阅读一些代码,例如

$html = Get-Content -Path "E:\POWERSHELL\IMDB pages\tt0062940.html" -Raw
$htmlFile = New-Object -ComObject "HTMLFile"
$htmlFile.IHTMLDocument2_write($html)

但我现在不知道该怎么办。有人可以告诉我是否可以使用 XPath 在 Powershell 中选择 HTML 元素来解析和提取本地文件中的信息。 谢谢。

【问题讨论】:

    标签: html powershell xpath


    【解决方案1】:

    您可以使用Select-Xml,如下所示。

    $Path = "E:\POWERSHELL\IMDB pages\tt0062940.html"
    $h1Text = (Select-Xml -Path $Path -Xpath /html/body/div[3]/div/div[2]/div[5]/div[1]/div/div/div[1]/div[2]/div/div[2]/div[2]/h1).Node.InnerText
    $h1Text
    

    或者您可以将路径用双引号括起来,这样您就不必担心文件夹名称之间的空格。

    $h1Text = (Select-Xml -Path "E:\POWERSHELL\IMDB pages\tt0062940.html" -Xpath /html/body/div[3]/div/div[2]/div[5]/div[1]/div/div/div[1]/div[2]/div/div[2]/div[2]/h1).Node.InnerText
    $h1Text
    

    【讨论】:

    • 您的 cmd let 无法运行,因为目录名称包含空格。我不知道如何解决它。
    • 尝试更新的答案。其他选项是将路径用双引号 " 括起来。
    • 我将文件移动到 K: 驱动器上的文件夹并输入您的命令 $h1Text = (Select-Xml -Path "K:\MY DOCUMENTS\POWERSHELL\IMDB pages\tt0062940.html" -Xpath /html/body/div[3]/div/div[2]/div[5]/div[1]/div/div/div[1]/div[2]/div/div[2]/div[2]/h1).Node.InnerText $h1Text 但它说 Select-Xml : The file 'K:\MY DOCUMENTS\POWERSHELL\IMDB pages\tt0062940.html' cannot be read: An error occurred while parsing EntityName. Line 25, position 49. .. + CategoryInfo : InvalidArgument: (K:\MY DOCUMENTS...\tt0062940.html:String) [Select-Xml], Argument.. 我只是引用了一些话。我现在该怎么办。
    • 检查您的html 文件是否有效。似乎您的 html 中的第 25 行第 49 列存在一些问题
    • 这里的“字符串”是什么,然后\tt0062940.html:String) [Select-Xml], Argument.. 好吧,我对 HTML 文件没有任何权利。我只需将链接输入 IDM 应用程序并下载它。如果你愿意,我会上传文件,然后给出链接。
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 2013-01-15
    • 1970-01-01
    • 2023-03-14
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    相关资源
    最近更新 更多