public static void Test_Unea_request_01() { // req region : // method post // url http://www.unea.fr/union-nationale-entreprises-adaptees/annuaire-unea/71/71/annuaire/annuaire.asp // Cookie __atuvc=1%7C4; PHPSESSID=t85siq9oqn4sqmi0eg09schbh0; ASPSESSIONIDQABATCST=BDBNKJFAHJNFHLOCOJGCGOOF; __utma=169855717.692259951.1390462116.1391519633.1391522222.4; __utmc=169855717; __utmz=169855717.1390462116.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) // Referer http://www.unea.fr/union-nationale-entreprises-adaptees/annuaire-unea/71/71/annuaire/annuaire.asp?txtRecherche=Entrez%20le%20nom%20d'une%20entreprise&hiddenValider=true // postData hiddenValider=true&txtRecherche=Par+Nom+Entreprise&txtRecherche1=&txtRecherche2=1&txtRecherche3=&txtRecherche4= // txtRecherche2=1 ==> 1 = Alsace string url = "http://www.unea.fr/union-nationale-entreprises-adaptees/annuaire-unea/71/71/annuaire/annuaire.asp"; string request = "hiddenValider=true&txtRecherche=Par+Nom+Entreprise&txtRecherche1=&txtRecherche2=1&txtRecherche3=&txtRecherche4="; string referer = "http://www.unea.fr/union-nationale-entreprises-adaptees/annuaire-unea/71/71/annuaire/annuaire.asp?txtRecherche=Entrez%20le%20nom%20d'une%20entreprise&hiddenValider=true"; //HtmlXmlReader hr = Http2.HtmlReader; //hr.WebRequestMethod = HttpRequestMethod.Post; //hr.WebRequestContent = request; //hr.WebRequestContentType = "application/x-www-form-urlencoded"; //hr.WebRequestReferer = referer; HttpRequestParameters_v1 requestParameters = new HttpRequestParameters_v1(); requestParameters.method = HttpRequestMethod.Post; requestParameters.content = request; requestParameters.contentType = "application/x-www-form-urlencoded"; requestParameters.referer = referer; Http_v3.LoadUrl(url, requestParameters); }
public virtual string GetUrlSubDirectory(string url, HttpRequestParameters_v1 requestParameters = null) { if (_getUrlSubDirectory != null) return _getUrlSubDirectory(url, requestParameters); else return null; }
public override Image LoadImage(string url, HttpRequestParameters_v1 requestParameters = null) { MongoImage mongoImage = LoadMongoImage(url, requestParameters); if (mongoImage.Image == null) LoadImage(mongoImage); return mongoImage.Image; }
//public static CookieContainer Cookies { get { return _hxr.Cookies; } } public static bool LoadUrl(string url, HttpRequestParameters_v1 requestParameters = null) { try { _hxr.Load(url, requestParameters); //WriteLine("request headers :"); //WriteHeaders(_hxr.http.Request.Headers); //WriteLine("response headers :"); //WriteHeaders(_hxr.http.Response.Headers); return true; } catch (Exception ex) { //Load("http://www.frboard.com/magazines-et-journaux/441873-multi-les-journaux-mardi-13-aout-2013-pdf-lien-direct.html"); //15/08/2013 12:00:32 Error : A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 5.199.168.178:80 (System.Net.Sockets.SocketException) //Unable to connect to the remote server (System.Net.WebException) //---------------------- // at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) // at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) //---------------------- // at System.Net.HttpWebRequest.GetResponse() // at pb.old.Http.OpenWebRequest() in c:\pib\dropbox\pbeuz\Dropbox\dev\project\Source\Source_01\Source\PB_Tools\\Http_Html.cs:line 911 // at pb.old.Http.Open() in c:\pib\dropbox\pbeuz\Dropbox\dev\project\Source\Source_01\Source\PB_Tools\\Http_Html.cs:line 780 // at pb.old.Http.Load() in c:\pib\dropbox\pbeuz\Dropbox\dev\project\Source\Source_01\Source\PB_Tools\\Http_Html.cs:line 503 // at pb.old.HtmlXmlReader.Load(String sUrl) in c:\pib\dropbox\pbeuz\Dropbox\dev\project\Source\Source_01\Source\PB_Tools\\HtmlXmlReader.cs:line 426 // at Print.download.w.Test_frboard_02() // at Print.download.w.Run() //Trace.WriteLine("Error : \"{0}\" ({1})", ex.Message, ex.GetType().ToString()); Trace.CurrentTrace.WriteError(ex); return false; } }
public string GetUrlSubPath(string url, HttpRequestParameters_v1 requestParameters = null) { string file = GetUrlFilename(url, requestParameters); string dir = GetUrlSubDirectory(url, requestParameters); if (dir != null) file = zPath.Combine(dir, file); return file; }
public MongoImage LoadMongoImage(string url, HttpRequestParameters_v1 requestParameters = null) { BsonDocument document = GetCollection().zFindOneById<BsonDocument>(BsonValue.Create(url)); if (document != null) return BsonSerializer.Deserialize<MongoImage>(document); else return CreateMongoImage(url, requestParameters); }
public static void Test_RapideDdl_LoadUrl_01(string url) { //string url = "http://rapide-ddl.com/ebooks/"; HttpRequestParameters_v1 requestParameters = new HttpRequestParameters_v1(); requestParameters.encoding = Encoding.UTF8; requestParameters.cookies.Add(new Uri(url), new Cookie("hasVisitedSite", "Yes")); pb.old.Http_v2.LoadUrl(url, requestParameters); }
public static void Test_UrlToFileName_01() { string url = "http://www.unea.fr/union-nationale-entreprises-adaptees/annuaire-unea/71/71/annuaire/annuaire.asp"; string request = "hiddenValider=true&txtRecherche=&txtRecherche1=&txtRecherche2=1&txtRecherche3=&txtRecherche4="; HttpRequestParameters_v1 requestParameters = new HttpRequestParameters_v1(); requestParameters.method = HttpRequestMethod.Post; requestParameters.content = request; //_tr.WriteLine(zurl.UrlToFileName(url, UrlFileNameType.FileName | UrlFileNameType.Content, null, requestParameters)); _tr.WriteLine(zurl.UrlToFileName(new HttpRequest { Url = url, Content = requestParameters.content }, UrlFileNameType.FileName | UrlFileNameType.Content)); }
public static void LoadImages(List<WebImage> images, HttpRequestParameters_v1 requestParameters = null) { for (int i = 0; i < images.Count; ) { if (!LoadImage(images[i], requestParameters, __imageFilter)) images.RemoveAt(i); else i++; } }
public static HttpRequest CreateHttpRequest(string url, HttpRequestParameters_v1 requestParameters) { HttpRequest httpRequest = new HttpRequest(); httpRequest.Url = url; if (requestParameters != null) { httpRequest.Method = requestParameters.method; httpRequest.Content = requestParameters.content; httpRequest.Referer = requestParameters.referer; } return httpRequest; }
public static bool LoadToFile(string url, string file, HttpRequestParameters_v1 requestParameters = null) { try { _hxr.LoadToFile(url, file, requestParameters); return true; } catch (Exception ex) { //WriteLine("Error : \"{0}\" ({1})", ex.Message, ex.GetType().ToString()); Trace.CurrentTrace.WriteError(ex); return false; } }
// bool desactivateDocumentStore = false public static RapideDdl_PostDetail Load(string url, HttpRequestParameters_v1 requestParameters = null, bool reload = false, bool loadImage = false, bool refreshDocumentStore = false) { //Trace.WriteLine("RapideDdl_LoadDetail.Load \"{0}\"", url); if (requestParameters == null) requestParameters = new HttpRequestParameters_v1(); requestParameters.encoding = Encoding.UTF8; pb.Web.v1.RequestFromWeb_v2 request = new pb.Web.v1.RequestFromWeb_v2(url, requestParameters, reload, false); //_load.DesactivateDocumentStore = desactivateDocumentStore; RapideDdl_PostDetail postDetail = _load.Load(request, GetPostDetailKey(url), refreshDocumentStore); //_load.DesactivateDocumentStore = false; if (loadImage) pb.old.Http_v2.LoadImageFromWeb(postDetail.images); return postDetail; }
public static HttpRequestParameters CreateHttpRequestParameters(HttpRequestParameters_v1 requestParameters) { HttpRequestParameters requestParameters_new = new HttpRequestParameters(); if (requestParameters != null) { requestParameters_new.Accept = requestParameters.accept; requestParameters_new.AutomaticDecompression = requestParameters.automaticDecompression; requestParameters_new.ContentType = requestParameters.contentType; requestParameters_new.Cookies = requestParameters.cookies; requestParameters_new.Encoding = requestParameters.encoding; requestParameters_new.Expect100Continue = requestParameters.Expect100Continue; requestParameters_new.Headers = requestParameters.headers; requestParameters_new.UserAgent = requestParameters.userAgent; } return requestParameters_new; }
public static TelechargementPlus_PostDetail Load(string url, HttpRequestParameters_v1 requestParameters = null, bool reload = false, bool loadImage = false) { //Trace.WriteLine("TelechargementPlus_LoadDetail.Load \"{0}\"", url); if (requestParameters == null) requestParameters = new HttpRequestParameters_v1(); requestParameters.encoding = Encoding.UTF8; //RequestFromWeb request = new RequestFromWeb(url, requestParameters, reload, loadImage); pb.Web.v1.RequestFromWeb_v2 request = new pb.Web.v1.RequestFromWeb_v2(url, requestParameters, reload, false); //WebDataRequest<TelechargementPlus_PostDetail> request = new WebDataRequest<TelechargementPlus_PostDetail>(url, GetPostDetailKey(url), requestParameters, reload, loadImage); TelechargementPlus_PostDetail postDetail = _load.Load(request, GetPostDetailKey(url)); if (loadImage) { pb.old.Http_v2.LoadImageFromWeb(postDetail.images); } return postDetail; }
public static bool LoadImage(WebImage image, HttpRequestParameters_v1 requestParameters = null, Predicate<ImageMongoCache_v1> filter = null) { if (image.Url != null && image.Image == null) { if (__imageCacheManager != null) { ImageMongoCache_v1 imageCache = (ImageMongoCache_v1)__imageCacheManager.GetImageCache(image.Url, requestParameters); if (filter != null && !filter(imageCache)) return false; image.Image = imageCache.Image; } else image.Image = pb.old.Http_v2.LoadImageFromWeb(image.Url, requestParameters); } return true; }
//public static void LoadImageFromWeb(ImageHtml image, HttpRequestParameters requestParameters = null) //{ // if (image.Source != null) // image.Image = LoadImageFromWeb(image.Source, requestParameters); //} // List<ImageHtml> images public static void LoadImageFromWeb(IEnumerable<ImageHtml> images, HttpRequestParameters_v1 requestParameters = null) { foreach (ImageHtml image in images) { if (image.Source != null) { if (image.Image == null) image.Image = LoadImageFromWeb(image.Source, requestParameters); if (image.Image != null) { image.ImageWidth = image.Image.Width; image.ImageHeight = image.Image.Height; } } } }
public static void Test_Handeco_LoadHeaderPages_01(int nbPage = 1, bool loadLastPage = false) { Trace.WriteLine("Test_Handeco_Load_01"); // www.handeco.org => 87.98.177.160 // impossible d'aller directement à la page 2 // les paramètres sont envoyés par un post qui renvoie la page 1 // puis on fait un get pour les pages suivantes string url = "http://www.handeco.org/fournisseurs/rechercher"; //Http2.LoadUrl(url); // tous les départements string content = "raisonSociale=&SIRET=&departements%5B%5D=67&departements%5B%5D=68&departements%5B%5D=24&departements%5B%5D=33&departements%5B%5D=40&departements%5B%5D=47&departements%5B%5D=64&departements%5B%5D=03&departements%5B%5D=15&departements%5B%5D=43&departements%5B%5D=63&departements%5B%5D=14&departements%5B%5D=50&departements%5B%5D=61&departements%5B%5D=21&departements%5B%5D=58&departements%5B%5D=71&departements%5B%5D=89&departements%5B%5D=22&departements%5B%5D=29&departements%5B%5D=35&departements%5B%5D=56&departements%5B%5D=18&departements%5B%5D=28&departements%5B%5D=36&departements%5B%5D=37&departements%5B%5D=41&departements%5B%5D=45&departements%5B%5D=08&departements%5B%5D=10&departements%5B%5D=51&departements%5B%5D=52&departements%5B%5D=2A&departements%5B%5D=2B&departements%5B%5D=25&departements%5B%5D=39&departements%5B%5D=70&departements%5B%5D=90&departements%5B%5D=27&departements%5B%5D=76&departements%5B%5D=75&departements%5B%5D=77&departements%5B%5D=78&departements%5B%5D=91&departements%5B%5D=92&departements%5B%5D=93&departements%5B%5D=94&departements%5B%5D=95&departements%5B%5D=11&departements%5B%5D=30&departements%5B%5D=34&departements%5B%5D=48&departements%5B%5D=66&departements%5B%5D=19&departements%5B%5D=23&departements%5B%5D=87&departements%5B%5D=54&departements%5B%5D=55&departements%5B%5D=57&departements%5B%5D=88&departements%5B%5D=09&departements%5B%5D=12&departements%5B%5D=31&departements%5B%5D=32&departements%5B%5D=46&departements%5B%5D=65&departements%5B%5D=81&departements%5B%5D=82&departements%5B%5D=59&departements%5B%5D=62&departements%5B%5D=44&departements%5B%5D=49&departements%5B%5D=53&departements%5B%5D=72&departements%5B%5D=85&departements%5B%5D=02&departements%5B%5D=60&departements%5B%5D=80&departements%5B%5D=16&departements%5B%5D=17&departements%5B%5D=79&departements%5B%5D=86&departements%5B%5D=04&departements%5B%5D=05&departements%5B%5D=06&departements%5B%5D=13&departements%5B%5D=83&departements%5B%5D=84&departements%5B%5D=01&departements%5B%5D=07&departements%5B%5D=26&departements%5B%5D=38&departements%5B%5D=42&departements%5B%5D=69&departements%5B%5D=73&departements%5B%5D=74&departements%5B%5D=971&departements%5B%5D=973&departements%5B%5D=972&departements%5B%5D=974&departements%5B%5D=988&departements%5B%5D=987&departements%5B%5D=975&departements%5B%5D=976&departements%5B%5D=986&experience_cotraitance=0&motsCles=&submitRecherche=Rechercher"; // Auvergne - 03 Allier //string content = "raisonSociale=&SIRET=&departements%5B%5D=03&experience_cotraitance=0&motsCles=&submitRecherche=Rechercher"; CookieContainer cookies = new CookieContainer(); HttpRequestParameters_v1 requestParameters = new HttpRequestParameters_v1(); requestParameters.cookies = cookies; requestParameters.method = HttpRequestMethod.Post; requestParameters.content = content; //requestParameters.Expect100Continue = true; //HtmlXmlReader hxr = HtmlXmlReader.CurrentHtmlXmlReader; //hxr.LoadRepeatIfError = 1; //hxr.Load(url, requestParameters); Http_v3.LoadUrl(url, requestParameters); requestParameters = new HttpRequestParameters_v1(); requestParameters.cookies = cookies; int page = 1; for (int i = 1; i < nbPage; i++) { // http://www.handeco.org/fournisseurs/rechercher/page/2 url = "http://www.handeco.org/fournisseurs/rechercher/page/" + (++page).ToString(); Http_v3.LoadUrl(url, requestParameters); } if (loadLastPage) { url = "http://www.handeco.org/fournisseurs/rechercher/page/200"; Http_v3.LoadUrl(url, requestParameters); } }
public static void Test_Unea_LoadHeader_01() { Unea.Unea.Init(); //string request = "hiddenValider=true&txtRecherche=Par+Nom+Entreprise&txtRecherche1=&txtRecherche2=1&txtRecherche3=&txtRecherche4="; bool reload = false; bool loadImage = false; string url = "http://www.unea.fr/union-nationale-entreprises-adaptees/annuaire-unea/71/71/annuaire/annuaire.asp"; string referer = "http://www.unea.fr/union-nationale-entreprises-adaptees/annuaire-unea/71/71/annuaire/annuaire.asp?txtRecherche=Entrez%20le%20nom%20d'une%20entreprise&hiddenValider=true"; string request = "hiddenValider=true&txtRecherche=&txtRecherche1=&txtRecherche2=1&txtRecherche3=&txtRecherche4="; string requestContentType = "application/x-www-form-urlencoded"; HttpRequestParameters_v1 requestParameters = new HttpRequestParameters_v1(); requestParameters.method = HttpRequestMethod.Post; requestParameters.content = request; requestParameters.contentType = requestContentType; requestParameters.referer = referer; Unea_LoadHeader load = new Unea_LoadHeader(url, requestParameters); load.Load(reload, loadImage); load.Data.zView(); }
protected MongoImage CreateMongoImage(string url, HttpRequestParameters_v1 requestParameters = null) { string file = _urlCache.GetUrlSubPath(url, requestParameters); string path = zPath.Combine(_urlCache.CacheDirectory, file); if (!zFile.Exists(path)) //Http2.LoadToFile(url, path, requestParameters); Http_v3.LoadToFile(url, path, requestParameters); Image image = null; if (zFile.Exists(path)) { try { image = zimg.LoadFromFile(path); } catch (Exception exception) { Trace.WriteLine("error unable to load image url \"{0}\" to \"{1}\" (WebImageMongoCacheManager.CreateMongoImage())", url, path); Trace.Write("error : "); Trace.WriteLine(exception.Message); } } else { Trace.WriteLine("error unable to load image url \"{0}\" to \"{1}\" (WebImageMongoCacheManager.CreateMongoImage())", url, path); } MongoImage mongoImage = new MongoImage(); mongoImage.Url = url; mongoImage.File = file; mongoImage.Width = image != null ? image.Width : 0; mongoImage.Height = image != null ? image.Height : 0; mongoImage.Image = image; GetCollection().zUpdate(new QueryDocument { { "_id", BsonValue.Create(url) } }, new UpdateDocument { { "$set", mongoImage.ToBsonDocument() } }, UpdateFlags.Upsert); return mongoImage; }
public ImageMongoCache_v1(WebImageCacheManager_v1 imageUrlCacheManager, string url, HttpRequestParameters_v1 requestParameters = null) : base(imageUrlCacheManager, url, requestParameters) { }
public override ImageCache_v1 GetImageCache(string url, HttpRequestParameters_v1 requestParameters = null) { return new ImageMongoCache_v1(this, url, requestParameters); }
public static Image LoadImage(string url, HttpRequestParameters_v1 requestParameters = null) { try { if (__imageCacheManager != null) { ImageCache_v1 imageCache = __imageCacheManager.GetImageCache(url, requestParameters); return imageCache.Image; } else return pb.old.Http_v2.LoadImageFromWeb(url, requestParameters); } catch (Exception ex) { pb.Trace.WriteLine("error RapideDdl loading image : {0}", ex.Message); return null; } }
public virtual ImageCache_v1 GetImageCache(string url, HttpRequestParameters_v1 requestParameters = null) { return new ImageCache_v1(this, url, requestParameters); }
public static Image LoadImageFromWeb(string url, HttpRequestParameters_v1 requestParameters = null) { try { Image image = _hxr.LoadImage(url, requestParameters); //if (image.Height > 200) // image = image.zResize(height: 200); return image; } catch (Exception ex) { //WriteLine("Error : \"{0}\" ({1})", ex.Message, ex.GetType().ToString()); Trace.CurrentTrace.WriteError(ex); return null; } }
public virtual string GetUrlFilename(string url, HttpRequestParameters_v1 requestParameters = null) { return zurl.UrlToFileName(url, _urlFileNameType, httpRequestContent: requestParameters != null ? requestParameters.content : null); }
public abstract Image LoadImage(string url, HttpRequestParameters_v1 requestParameters = null);
public ImageCache_v1(WebImageCacheManager_v1 imageUrlCacheManager, string url, HttpRequestParameters_v1 requestParameters = null) { _imageUrlCacheManager = imageUrlCacheManager; _url = url; _requestParameters = requestParameters; }
public string GetUrlPath(string url, HttpRequestParameters_v1 requestParameters = null) { return zPath.Combine(_cacheDirectory, GetUrlSubPath(url, requestParameters)); }
public static void Test_frboard_03() { //string url = "http://www.frboard.com/magazines-et-journaux/441873-multi-les-journaux-mardi-13-aout-2013-pdf-lien-direct.html"; //string url = "http://www.frboard.com/magazines-et-journaux/442257-multi-les-journaux-mercredi-14-aout-2013-pdf-lien-direct.html"; //string url = "http://www.frboard.com/magazines-et-journaux/442270-multi-le-monde-du-jeudi-15-aout-2013-pdf.html"; string url = "http://www.frboard.com/magazines-et-journaux/442649-multi-les-magazines-jeudi-15-aout-2013-pdf-liens-direct-new-post.html"; //string url = ""; //string url = ""; //string url = ""; //string url = ""; //HtmlXmlReader.CurrentHtmlXmlReader.Cookies.zAdd("http://www.frboard.com/", Frboard.GetCookies()); HttpRequestParameters_v1 requestParameters = new HttpRequestParameters_v1(); requestParameters.cookies.zAdd("http://www.frboard.com/", Frboard.GetCookies()); pb.old.HtmlXmlReader.CurrentHtmlXmlReader.Load(url, requestParameters); string xpath = "//div[@class='postbody']//div[@class='postrow has_after_content']"; XDocument doc = pb.old.HtmlXmlReader.CurrentHtmlXmlReader.XDocument; XElement xe = doc.Root.zXPathElement(xpath); if (xe == null) { Trace.WriteLine("node not found \"{0}\"", xpath); return; } xpath = ".//div[@class='content']"; xe = xe.XPathSelectElement(xpath); if (xe == null) { Trace.WriteLine("node not found \"{0}\"", xpath); return; } //foreach (XXNode child in xe.DescendantNodes().zWhereSelect(FrboardPost.Filter)) foreach (pb.old.XXNode child in FrboardPostFilter.GetFilteredNodeList(xe)) { Trace.WriteLine(child.ToString()); } }
//public static void Test_frboard_01() //{ // string url = "http://www.frboard.com/magazines-et-journaux/"; // HtmlXmlReader.CurrentHtmlXmlReader.Load(url); // HtmlXmlReader.CurrentHtmlXmlReader.ReadSelect("//li[starts-with(@class, 'threadbit')]", // ".//h3[@class='threadtitle']//a/@href:.:n(href)", // ".//h3[@class='threadtitle']//a/text():.:n(label1)", // ".//div[@class='author']//text():.:Concat( ):n(author)"); // //HtmlXmlReader.CurrentHtmlXmlReader.ReadSelect("//span[@class='prev_next']//a[@rel='next']/@href"); //} public static void Test_frboard_02() { //string url = "http://www.frboard.com/magazines-et-journaux/441873-multi-les-journaux-mardi-13-aout-2013-pdf-lien-direct.html"; //string url = "http://www.frboard.com/magazines-et-journaux/442257-multi-les-journaux-mercredi-14-aout-2013-pdf-lien-direct.html"; //string url = "http://www.frboard.com/magazines-et-journaux/442270-multi-le-monde-du-jeudi-15-aout-2013-pdf.html"; string url = "http://www.frboard.com/magazines-et-journaux/442649-multi-les-magazines-jeudi-15-aout-2013-pdf-liens-direct-new-post.html"; //string url = ""; //string url = ""; //string url = ""; //string url = ""; //HtmlXmlReader.CurrentHtmlXmlReader.Cookies.zAdd("http://www.frboard.com/", Frboard.GetCookies()); HttpRequestParameters_v1 requestParameters = new HttpRequestParameters_v1(); requestParameters.cookies.zAdd("http://www.frboard.com/", Frboard.GetCookies()); pb.old.HtmlXmlReader.CurrentHtmlXmlReader.Load(url, requestParameters); // <div class="postbody"> <div class="content"> <blockquote class="postcontent restore "> // <div class="postbody"> <div class="postrow has_after_content"> //HtmlXmlReader.CurrentHtmlXmlReader.ReadSelect("//div[@class='postbody']//blockquote"); //string xpath = "//div[@class='postbody']//blockquote"; //string xpath = "//div[@class='postbody']//div[@class='postrow has_after_content']"; string xpath = "//div[@class='postbody']//div[@class='postrow has_after_content']"; XDocument doc = pb.old.HtmlXmlReader.CurrentHtmlXmlReader.XDocument; XElement xe = doc.Root.zXPathElement(xpath); if (xe == null) { Trace.WriteLine("node not found \"{0}\"", xpath); return; } Trace.WriteLine("found \"{0}\"", xpath); Trace.WriteLine("date \"{0}\" time \"{1}\"", doc.Root.zXPathValue("//span[@class='date']//text()"), doc.Root.zXPathValue("//span[@class='time']//text()")); // <div class="userinfo"> <div class="username_container"> <div class="popupmenu memberaction"> // <a rel="nofollow" class="username offline popupctrl" href="http://www.frboard.com/members/145457-lc.good.day.html" title="LC.GooD.Day est déconnecté"><strong> // <img src="http://www.frboard.com/images/misc/ur/general.png" class="userrank"></img><strong><font color="#696969">LC.GooD.Day</font></strong></strong></a> Trace.WriteLine("author \"{0}\"", doc.Root.zXPathValue("//div[@class='userinfo']//a//text()")); xpath = ".//div[@class='content']"; xe = xe.XPathSelectElement(xpath); if (xe == null) { Trace.WriteLine("node not found \"{0}\"", xpath); return; } foreach (XNode child in xe.DescendantNodes()) { if (child is XElement) { XElement xeChild = child as XElement; //Trace.WriteLine("child element \"{0}\"", xeChild.Name); if (xeChild.Name == "img") Trace.WriteLine("img src \"{0}\" alt \"{1}\" title \"{2}\" class \"{3}\"", xeChild.zAttribValue("src"), xeChild.zAttribValue("alt"), xeChild.zAttribValue("title"), xeChild.zAttribValue("class")); } else if (child is XText) { XText xtextChild = child as XText; if (child.Parent.Name == "a") { Trace.WriteLine("link \"{0}\" href \"{1}\" rel \"{2}\"", xtextChild.Value, child.Parent.zAttribValue("href"), child.Parent.zAttribValue("rel")); } else Trace.WriteLine("text \"{0}\"", xtextChild.Value.Trim()); } else Trace.WriteLine("child \"{0}\"", child.NodeType); } Trace.WriteLine(); //HtmlXmlReader.CurrentHtmlXmlReader.ReadSelect("//li[starts-with(@class, 'threadbit')]", // ".//h3[@class='threadtitle']//a/@href:.:n(href)", // ".//h3[@class='threadtitle']//a/text():.:n(label1)", // ".//div[@class='author']//text():.:Concat( ):n(author)"); //HtmlXmlReader.CurrentHtmlXmlReader.ReadSelect("//span[@class='prev_next']//a[@rel='next']/@href"); }