这里有一个例子: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中提取信息所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)