Я считаю, что cherio.load (тело) дает вам DOM. Если это так, вы можете использовать innerText примерно так:
// Parse the document body
var $ = cheerio.load(body);
console.log($('body').innerText);
Если cherio предоставляет вам HTML, вы можете преобразовать его в DOM с помощью JSDOM примерно так: :
// Parse the document body
const jsdom = require(jsdom);
const dom = jsdom.JSDOM(cheerio.load(body),{"url": pageToVisit}).window.document.body;
console.log(dom.innerText);
(редактирование)
Я выяснил, как динамично добавить свойство (названный "свойством сценария") к Fileobject, поэтому теперь, я могу использовать синтаксис: $theFileObject. CompressedSize для чтения размера.
(конец редактирования)
Ответ Read Goyuix, и я думал "Спокойный, но не являюсь там некоторой дополнительной типом возможностью в Powershell?". Таким образом я нашел это сообщение Scott Hanselman: http://www.hanselman.com/blog/MakingJunctionsReparsePointsVisibleInPowerShell.aspx
И я создал Свойство Сценария для объекта FileInfo: CompressedSize.
Вот то, что я сделал: (отметьте: я довольно плохо знаком с Powershell, или по крайней мере я не использую его очень. Это могло, вероятно, быть сделано намного лучше, но здесь - то, что я сделал:
Во-первых, я скомпилировал Ntfs. ExtendedFileInfo из сообщения Goyuix. Я поместил DLL в свой каталог профиля Powershell (Documents\WindowsPowershell)
Затем, я создал файл в своем каталоге профиля под названием Мой. Типы ps1xml.
Я поместил следующий XML в файл:
<Types>
<Type>
<Name>System.IO.FileInfo</Name>
<Members>
<ScriptProperty>
<Name>CompressedSize</Name>
<GetScriptBlock>
[Ntfs.ExtendedFileInfo]::GetCompressedFileSize($this.FullName)
</GetScriptBlock>
</ScriptProperty>
</Members>
</Type>
</Types>
Тот код (когда-то объединенный в систему типов) динамично добавит свойство под названием CompressedSize к объектам FileInfo, которые возвращаются get-childitem/dir. Но Powershell еще не знает о коде, и он еще не знает о моем DLL. Мы обрабатываем это на следующем шаге:
Профиль ps1 редактирования. в том же каталоге. Теперь, мой файл Профиля, оказывается, уже имеет некоторый материал в нем, потому что у меня есть Общественные Расширения для установленного powershell. Хотелось бы надеяться, я включаю все, в чем Вы нуждаетесь в этом следующем фрагменте кода, так, чтобы он работал даже над машиной, которая не имеет расширений. Добавьте следующий код для Профилирования:
#This will load the ExtendedfileInfo assembly to enable the GetCompressedFileSize method. this method is used by the
#PSCompressedSize Script Property attached to the FileInfo object.
$null = [System.Reflection.Assembly]::LoadFile("$ProfileDir\ntfs.extendedfileinfo.dll")
#merge in my extended types
$profileTypes = $ProfileDir | join-path -childpath "My.Types.ps1xml"
Update-TypeData $profileTypes
Теперь, переменная $ProfileDir, на которую я ссылаюсь, определяется ранее в моем сценарии Профиля ps1. На всякий случай это не находится в Вашем, вот определение:
$ProfileDir = split-path $MyInvocation.MyCommand.Path -Parent
Именно. В следующий раз, когда Вы выполняете Powershell, можно получить доступ к свойству CompressedSize на объекте FileInfo, как если бы это - любое другое свойство. Пример:
$myFile = dir c:\temp\myfile.txt
$myFile. CompressedSize
Это работает (на моей машине, так или иначе), но я хотел бы услышать, согласуется ли она с лучшими практиками. Одна вещь я знаю, что делаю неправильно: в файле Профиля ps1 я возвращаю результаты LoadFile в переменную, которую я не собираюсь использовать ($null = и тому подобное). Я сделал это для подавления дисплея результата файла загрузки к консоли. Существует, вероятно, лучший способ сделать это.
Загрузите Управляемый Windows API (http://mwinapi.sourceforge.net/) и проверьте класс ExtendedFileInfo. Существует метод GetPhysicalFileSize (), который возвратит размер, которого файл требует на диске.
public static ulong GetPhysicalFileSize(string filename)
Aternatively, Вы могли скомпилировать свой собственный DLL и загрузить блок для той одной функции:
using System;
using System.Runtime.InteropServices;
namespace NTFS {
public class ExtendedFileInfo
{
[DllImport("kernel32.dll", SetLastError=true, EntryPoint="GetCompressedFileSize")]
static extern uint GetCompressedFileSizeAPI(string lpFileName, out uint lpFileSizeHigh);
public static ulong GetCompressedFileSize(string filename)
{
uint high;
uint low;
low = GetCompressedFileSizeAPI(filename, out high);
int error = Marshal.GetLastWin32Error();
if (high == 0 && low == 0xFFFFFFFF && error != 0)
{
throw new System.ComponentModel.Win32Exception(error);
}
else
{
return ((ulong)high << 32) + low;
}
}
}
}
Затем скомпилировать:
csc /target:library /out:ntfs.extendedfileinfo.dll ntfs.extendedfileinfo.cs
И наконец, чтобы загрузиться и работать в PowerShell:
PS C:\> [System.Reflection.Assembly]::LoadFile("C:\ntfs.extendedfileinfo.dll")
PS C:\> [NTFS.ExtendedFileInfo]::GetCompressedFileSize("C:\sample.txt")
Если Вы не можете найти управляемый API, Вам нравится в PowerShell V2, это намного легче к P/Invoke API Win32. Прочитайте Пошаговую демонстрацию PowerShell P/Invoke для инструкций.
Легкий сделать использование Добавлять-тип V2 и Pinvoke.NET:
add-type -type @'
using System;
using System.Runtime.InteropServices;
using System.ComponentModel;
namespace Win32Functions
{
public class ExtendedFileInfo
{
[DllImport("kernel32.dll", SetLastError=true, EntryPoint="GetCompressedFileSize")]
static extern uint GetCompressedFileSizeAPI(string lpFileName, out uint lpFileSizeHigh);
public static ulong GetCompressedFileSize(string filename)
{
uint high;
uint low;
low = GetCompressedFileSizeAPI(filename, out high);
int error = Marshal.GetLastWin32Error();
if (high == 0 && low == 0xFFFFFFFF && error != 0)
throw new Win32Exception(error);
else
return ((ulong)high << 32) + low;
}
}
}
'@
[Win32Functions.ExtendedFileInfo]::GetCompressedFileSize( "C:\autoexec.bat")
Экспериментируйте!Приятного отдыха! Участвуйте!
Jeffrey Snover [MSFT] Посещение Архитектора Windows Management Partner Команда Windows PowerShell ведет блог в: Посещение http://blogs.msdn.com/PowerShell Windows PowerShell ScriptCenter в: http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx
$ s = (compact / q C: \ Any.dat | где-объект {$ _. Contains ('total bytes')}). Split ()}; $ s [8 ] .padleft (20) + $ s [0] .padleft (20)