Powershell - Как извлечь элемент локальных html файлов с помощью XPath - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь удалить некоторые данные с сайта IMDB. Данные, которые я хочу извлечь, - это название (mov ie name), год выпуска и краткое описание некоторых фильмов. Я пакетно загрузил все страницы, с которых я хочу извлечь, на свой жесткий диск, и когда я проверяю элемент страницы, которую я хочу извлечь, в Google Chrome, его полный селектор XPath выглядит примерно так: mov ie name:

/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 для выбора HTML элементов в Powershell для анализа и извлечения информации из локальных файлов. Спасибо.

1 Ответ

0 голосов
/ 03 марта 2020

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...