r15ch13
Lieutenant
- Registriert
- Dez. 2003
- Beiträge
- 790
Hab dir da mal etwas zusammengebaut
C#:
/// <summary>
/// Sucht Haendleradressen bei silit.de
/// </summary>
/// <license>MIT License (http://r15ch13.mit-license.org/)</license>
/// <param name="postleitzahl">Postleitzahl der Region in der nach Haendlern gesucht wird</param>
/// <param name="radius">Suchradius in Kilometern</param>
/// <param name="country">Laendercode (ISO 3166)</param>
/// <returns>Haendleradressen</returns>
public List<string> Silit(string postleitzahl, string radius = "50", string country = "DE")
{
var adressen = new List<string>();
string html;
// Benutzereingabe an Silit.de senden und Ergebnis empfangen
using (var wb = new WebClient())
{
var data = new NameValueCollection();
data["wmf_store_locator[country]"] = country;
data["wmf_store_locator[query]"] = postleitzahl;
data["wmf_store_locator[radius]"] = radius;
data["wmf_store_locator[find]"] = "Finden";
data["wmf_store_locator[branches]"] = "1";
data["wmf_store_locator[dealers]"] = "1";
byte[] response = wb.UploadValues("http://www.silit.de/handel-outlets/", "POST", data);
html = System.Text.Encoding.UTF8.GetString(response);
}
if (!String.IsNullOrEmpty(html))
{
// HTML Dokument laden
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
// Die Adressen finden
var nodes = doc.DocumentNode.SelectNodes("//*[@class=\"storelist\"]/*[@class=\"lft\"]");
if (nodes != null)
{
foreach (HtmlNode adresse in nodes)
{
// Adresse bereinigen und in der Liste speichern
adressen.Add(adresse.InnerText.Replace("\t", "").Trim());
}
}
}
return adressen;
}
/// <summary>
/// Sucht Haendleradressen bei gefu.com
/// </summary>
/// <license>MIT License (http://r15ch13.mit-license.org/)</license>
/// <param name="postleitzahl">Postleitzahl der Region in der nach Haendlern gesucht wird</param>
/// <returns>Haendleradressen</returns>
public List<string> Gefu(string postleitzahl)
{
var adressen = new List<string>();
string html;
// Benutzereingabe an Silit.de senden und Ergebnis empfangen
using (var wb = new WebClient())
{
var data = new NameValueCollection();
data["tx_suppliersearch_pi1[sword]"] = postleitzahl;
data["no_cache"] = "1";
data["tx_suppliersearch_pi1[pointer]"] = "";
byte[] response = wb.UploadValues("http://www.gefu.com/haendlersuche.html", "POST", data);
html = System.Text.Encoding.UTF8.GetString(response);
}
if (!String.IsNullOrEmpty(html))
{
// HTML Dokument laden
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
// Die Adressen finden
var nodes = doc.DocumentNode.SelectNodes("//*[@class=\"tx-suppliersearch-pi1-listrow\"]/table/tr/td[2]");
if (nodes != null)
{
foreach (HtmlNode adresse in nodes)
{
// Adresse bereinigen und in der Liste speichern
adressen.Add(adresse.InnerText.Replace("\t", "").Replace("Zum Routenplaner", "").Trim());
}
}
}
return adressen;
}
/// <summary>
/// Sucht Haendleradressen bei kaiser-backform.com
/// </summary>
/// <license>MIT License (http://r15ch13.mit-license.org/)</license>
/// <param name="id">Id des Landes oder Kontinents</param>
/// <param name="land">Land oder Kontinent?</param>
/// <returns>Haendleradressen</returns>
public List<string> Kaiser(string id, bool land = false)
{
var adressen = new List<string>();
string html;
// Benutzereingabe an Silit.de senden und Ergebnis empfangen
using (var wb = new WebClient())
{
var url = "http://www.kaiser-backform.com/dealer-search-international_228.html";
if (land)
{
url += "?LandID=" + id;
}
else
{
url += "?ContinentID=" + id;
}
html = wb.DownloadString(url);
}
if (!String.IsNullOrEmpty(html))
{
// HTML Dokument laden
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
// Die Adressen finden
var nodes = doc.DocumentNode.SelectNodes("//*[@class=\"searchResult\"]");
if (nodes != null)
{
foreach (HtmlNode adresse in nodes)
{
// Adressedaten zusammen suchen
var h1 = adresse.SelectSingleNode("./h1");
var h2 = adresse.SelectSingleNode("./h2");
var left = adresse.SelectSingleNode("./div/div[@class=\"leftElement\"]");
var right = adresse.SelectNodes("./div/div[@class=\"rightElement\"]/span");
string gesamteAdresse;
string zusatz = "";
foreach (var zusatzNode in right)
{
if (zusatzNode.FirstChild.Name != "img")
{
if (zusatzNode.GetAttributeValue("class", "") == "type")
{
zusatz += zusatzNode.InnerText.Trim() + " ";
}
else
{
zusatz += zusatzNode.InnerText.Trim() + "\n";
}
}
}
// Adresse zusammensetzen
if (!String.IsNullOrEmpty(h1.InnerText))
{
gesamteAdresse = String.Format("Land: {0}\n{1}\n{2}\n\n{3}", h1.InnerText.Trim(), h2.InnerText.Trim(), left.InnerText.Trim(), zusatz.Replace(" ", " ").Trim());
}
else
{
gesamteAdresse = String.Format("{0}\n{1}\n\n{2}", h2.InnerText.Trim(), left.InnerText.Trim(), zusatz.Replace(" ", " ").Trim());
}
adressen.Add(gesamteAdresse.Trim());
}
}
}
return adressen;
}