从网站挑选东西?

时间:2011-01-17 02:15:01

标签: c# web-scraping bing-api

有没有办法,使用C#.Net,基本上使用类似http://www.bing.com/images/search?q=microsoft&form=QBIL&qs=n&sk=&sc=8-4的东西,从中提取所有图像,并将其放入文件中?

2 个答案:

答案 0 :(得分:0)

您可以使用HTML Agility Pack及其HTMLWeb类来解析网页。

答案 1 :(得分:0)

如果您想要做得更干净一点,那么最好的方法就是使用它。 在其JSON / XML / SOAP响应中,您将获得结果中每个Image的url,您可以在循环中检索这些图像,或者在LINQ查询中更好地检索这些图像。

查看此PDF,告诉您开始的基本信息。

以下是如何执行此操作的示例。首先允许您进行API查询的get an APPID

提出这样的请求

string url = "http://api.search.live.net/xml.aspx?Appid={0}&sources={1}&query={2}";
string completeUri = String.Format(url, AppId, "image", "microsoft");
HttpWebRequest webRequest = null;
webRequest = (HttpWebRequest)WebRequest.Create(completeUri);
HttpWebResponse webResponse = null;
webResponse = (HttpWebResponse)webRequest.GetResponse();
XmlReader xmlReader = null;
xmlReader = XmlReader.Create(webResponse.GetResponseStream());

然后创建一个将保留返回数据的类。

public class LiveSearchResultImage
{
    public string Title { get; set; }
    public string Description { get; set; }
    public string URI { get; set; }
    public string ImageURI { get; set; }
    public string ThumbnailURI { get; set; }
}

然后使用LINQ查询从响应中检索数据。

XDocument data = XDocument.Load(xmlReader);
IEnumerable<XNode> nodes = null;
nodes = data.Descendants(XName.Get("Results", IMAGE_NS)).Nodes();
if (nodes.Count() > 0)
{
    var results = from uris in nodes
    select new LiveSearchResultImage
    {
    URI =
    ((XElement)uris).Element(XName.Get("Url", IMAGE_NS)).Value,
    Title =
    ((XElement)uris).Element(XName.Get("Title", IMAGE_NS)).Value,
    ThumbnailURI =
    ((XElement)uris).Element(XName.Get("Thumbnail", IMAGE_NS)).Value,
    };
    return results;
}