从D中的网页读取数据?

从D中的网页读取数据?,d,phobos,D,Phobos,如何简单地打开一个url并用D从网页读取数据? (如果需要使用标准库功能,我更喜欢phobos而不是tango)我认为std.net.curl绑定是最好的选择,特别是它的get/post方法(示例见文档): 毕竟,curl是专门为这类任务设计的,绑定是phobos的一部分。curl在标准库中。您可以很容易地获取url,如下所示: import std.net.curl; string content = get("d-lang.appspot.com/testUrl2"); 如果需要解析ht

如何简单地打开一个url并用D从网页读取数据?
(如果需要使用标准库功能,我更喜欢phobos而不是tango)

我认为std.net.curl绑定是最好的选择,特别是它的get/post方法(示例见文档):


毕竟,curl是专门为这类任务设计的,绑定是phobos的一部分。

curl在标准库中。您可以很容易地获取url,如下所示:

import std.net.curl;
string content = get("d-lang.appspot.com/testUrl2");

如果需要解析html,我编写了一个dom库,它非常擅长解析html。

抓取dom.d和characterencodings.d,然后您可以:

import arsd.dom;
auto document = new Document();
document.parseGarbage(content); // content is from above, the html string

writeln(document.title); // the <title> contents
auto paragraph = document.querySelector("p");
if(paragraph is null)
     writeln("no paragraphs in this document");
else
     writeln("the first paragraph is: ", paragraph.innerText);
导入arsd.dom;
自动文档=新文档();
document.parseGarbage(内容);//内容来自上面的html字符串
书面文件(文件标题);//内容
自动段落=document.querySelector(“p”);
如果(段落为空)
书面形式(“本文件中无任何段落”);
其他的
书面语(“第一段为:”,段落。内部文本);

等等。如果您使用过JavaScriptDOM api,这与此非常相似(尽管也以许多方式进行了扩展)。

啊,谢谢!(不幸的是,在Ubuntu/LinuxMint repos中还不是火卫一版本的一部分:/)如果你不能使用火卫一,在我的githib(另一个答案中的链接)中,你可以抓取我的curl.d并使用“string content=curl(”);“如果你根本没有libcurl,我还有一个http.d,里面有一个简单的get()函数;字符串s=curl(“example.org”);,并将curl.d与其他.d文件放在同一文件夹中…有什么提示吗?请使用“导入arsd.curl;而不仅仅是导入curl;。编译时,将所有文件放在dmd命令行上:“dmd yourfile.d curl.d”“为了避免链接器错误。塞缪尔,啊,你最有可能使用的是基础回购的gdc,4.4一个?”?它必须有一个相当旧的版本的火卫一随附和与当前的错误修复节奏为D/火卫一我真的建议直接从开发人员获得最新版本,除非有具体的要求。不幸的是,对于纯“std.net.curl”代码例子上面,我遇到了由dmd生成的链接器顺序的问题,对于linux,这里讨论:这里:。。。但显然还没有在2.0.61中修复:(好的,所以我通过编译:“dmd[filename]-L-lphobos2-L-lcurl”来解决这个问题。)(哦,好吧,我还需要添加一个cast,这在文档中没有提到:“string s=cast(string)get([url]”;“…因为get返回一个字符[],而不是一个字符串。)string s=get([url]”。idup;?