wolfram-mathematica – 使用Mathematica从HTML中提取信息

wolfram-mathematica – 使用Mathematica从HTML中提取信息,第1张

概述有没有一个简单的方法来从特定的HTML表中使用Mathematica提取数据?进口似乎是非常强大的,而且Mathematica似乎能够很好地处理诸如XML之类的格式。 这里有一个例子:http://en.wikipedia.org/wiki/Unemployment_by_country 有关这方面的一般例子,请参考以下内容: >如何| Clean Up Data Imported from a 有没有一个简单的方法来从特定的HTML表中使用Mathematica提取数据?进口似乎是非常强大的,而且Mathematica似乎能够很好地处理诸如XML之类的格式。

这里有一个例子:http://en.wikipedia.org/wiki/Unemployment_by_country

解决方法 有关这方面的一般例子,请参考以下内容:

>如何| Clean Up Data Imported from a ZIP File
>如何| Clean Up Data Imported from a Website

对于这个具体的例子,只需要导入它

tmp = import["http://en.wikipedia.org/wiki/Unemployment_by_country","Data"]

清理它是相当简单的这个进口。该表是3列,从其余的东西中提取出来:

tmp1 = Cases[tmp,{_,_?NumberQ,_},\[Infinity]]

你可能想删除方括号引用(??):

tmp1[[All,3]] = Flatten[If[StringQ[#],StringCases[#,x__ ~~ Whitespace ~~ "[" ~~ __ :> x],#] & /@ tmp1[[All,3]]]GrID[tmp1,Frame -> All]

注意,如果您希望在表中,您可以添加标题,您可能会这样做

GrID[Join[{{"Country / Region","Unemployment rate (%)","Source / date of information"}},tmp1],Frame -> All]

纯粹主义者可能会反对最后一步,但是当你正在刮削数据时,你只是想完成这项工作,每个网站都是一个案例展望。所以一些手动检查和灵活性让您获得最快的整体效果。

编辑

如果你想要标志,你也可以从CountryData获取它们。需要进一步的清理,否则会发生大量的错误。清理涉及删除对括号中“主权国家”的引用。例如“关岛(美国)” – > “Gaum”。

tmp2 = Flatten[  If[StringMatchQ[#,__ ~~ "(" ~~ __],z__ ~~ Shortest["(" ~~ __ ~~ ")" ~~ EndOfString] :>        StringTrim@z],StringTrim[#]] & /@ tmp1[[All,1]]]

这仍然会产生CountryData无法识别的输出。

flags = CountryData[#,"Flag"] & /@ tmp2;Cases[flags,_CountryData]

6次错过了190次。从输出中删除那些未命中:

flags = If[head[#] === CountryData,{""},{#}] & /@ flags; (*much faster than rule replacement*)tmp2 = Join[flags,tmp1,2];GrID[tmp2,Frame -> All]

请注意,这需要一段时间才能呈现。

您可以根据需要明显地使用网格选项来设置网格,如果需要,还可以调整图像的大小。

总结

以上是内存溢出为你收集整理的wolfram-mathematica – 使用Mathematica从HTML中提取信息全部内容,希望文章能够帮你解决wolfram-mathematica – 使用Mathematica从HTML中提取信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1114168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存