将文本或html插入.notebook

Dan*_*olm 8 wolfram-mathematica

我想将网页的输出插入到笔记本中(本质上是文本或html"屏幕截图").不需要它"活",它只是供参考.

理想情况下,它看起来很像在网络浏览器上.我希望它是不可评估的,我不希望前端尝试将其格式化为非常错误的Mathematica表达式

(编辑添加:创建单元格并执行"单元格 - >转换为 - >文本显示"是一种很好的方式来显示文本而不需要前端重新格式化.我想知道这是否是"正确"的方法这样做或者有更好的方法,特别是如果我想要html格式或图形也是如此)

Sjo*_*ies 7

据我所知,Mathematica无法呈现HTML页面.使用Import您可以从基于HTML的网站和文件中获取各种内容.一种选择是获得基于文本的网站版本,如下所示:

Import["http://reference.wolfram.com/mathematica/guide/Mathematica.html", "Plaintext"]
Run Code Online (Sandbox Code Playgroud)

  • @Daniel没有必要拥有静态URL.如果您的网址应包含动态计算的内容,那么这并不难.示例:导入["http://some.site.com/staticpart?p"<> ToString [pageNumber]] (2认同)

rag*_*eld 6

如果您只想要文本(可能带有样式),请选择网页上的文本,在Mathematica中创建一个文本单元格(Mac上为cmd-7),然后粘贴.


WRe*_*ach 6

如果您使用的是Windows(使用.NET),则可以将Mathematica的NETLink功能与WebBrowser类结合使用来捕获网页的屏幕截图:

Needs["NETLink`"]
LoadNETType["System.Drawing.Imaging.ImageFormat", AllowShortContext -> False]
LoadNETType["System.Windows.Forms.WebBrowserReadyState", AllowShortContext -> False]

Options[dotNetBrowserScreenshot] = {Width -> 1024, Height -> Automatic};
dotNetBrowserScreenshot[uri_, OptionsPattern[]] :=
  NETBlock @ Module[{browser, bitmap, tempFile, image, bounds}
  , browser = NETNew["System.Windows.Forms.WebBrowser"]
  ; browser@Width = OptionValue[Width]
  ; browser@ScrollBarsEnabled = False
  ; browser@Navigate[uri]
  ; tempFile = Close@OpenWrite[]
  ; While[browser@ReadyState =!= System`Windows`Forms`WebBrowserReadyState`Complete
    , Pause[0.05]
    ]
  ; bounds = browser@Document@Body@ClientRectangle
  ; browser@Height = OptionValue[Height] /. Automatic -> bounds@Height
  ; bitmap = NETNew["System.Drawing.Bitmap", browser@Width, browser@Height]
  ; browser@DrawToBitmap[bitmap, bounds]
  ; browser@Dispose[]
  ; bitmap@Save[tempFile, System`Drawing`Imaging`ImageFormat`Png]
  ; bitmap@Dispose[]
  ; image = Import[tempFile, "PNG"]
  ; DeleteFile[tempFile]
  ; image
  ]
Run Code Online (Sandbox Code Playgroud)

样品用途:

示例截图

可以使用Height -> Automatic(这是默认值)捕获完整的网页.请注意,屏幕截图以缩小的放大率显示.