HTML Grab problemer
Hej folkens,Mit spørgsmål går på hvordan jeg i C# kan hente HTML data fra en hjemmeside og hente bestemte informationer 10 gange eller mindre - forskellige steder på HTML siden.
Eksempel:
En HTML side indeholder 10 produkter - for hver af disse produkter er oplyst produktnavn, pris, kategori, vægt, type og en addresse.
Der er altså 6 forskellige informationer jeg vil tage ud og smide en i tekstfil/db-fil.
Mit nuværende problem er at jeg kun kan gøre dette en gang korrekt - da jeg ikke kan finde ud af at lave en algoritme der sørger for at starte EFTER den har fundet den sidste information fra det forrige produkt.
Min kode ser lige nu således ud:
.
.
.
if (comboBox1.SelectedItem.ToString() == "a")
{
byte[] b = wc.DownloadData(urlstart + page + urlmiddel + "a" + urlend);
string s = System.Text.Encoding.ASCII.GetString(b);
int start = s.IndexOf("</strong> of ") + ("</strong> of ").Length;
int end = s.IndexOf(" |", start);
int end2 = s.IndexOf("</div", start);
string count = s.Substring(start, end - start);
if (count.Length < 200)
{
number = Convert.ToInt32(count);
}
else
{
count = s.Substring(start, end2 - start);
number = Convert.ToInt32(count);
}
int pages = number / 10;
for (int actualpage = pages; actualpage != 0; actualpage--)
{
byte[] m = wc.DownloadData(urlstart + actualpage + urlmiddel + "a" + urlend);
string st = System.Text.Encoding.ASCII.GetString(m);
int productstart = st.IndexOf("productName = \"") + ("productName = \"").Length;
int productend = 0;
while (14 != (productstart = st.IndexOf("productName = \"", productend) + ("productName = \"").Length))
{
productend = st.IndexOf("\";", productstart);
string productname = st.Substring(productstart, productend - productstart);
// Get product prices
int pricestart = st.IndexOf("price = \", $") + ("price = \", $").Length;
int priceend = st.IndexOf(" to buy\"", pricestart);
string productprice = st.Substring(pricestart, priceend - pricestart);
productprice = productprice.Replace(".", ",");
// Get product size
int sizestart = st.IndexOf("fileSize = \"") + ("fileSize = \"").Length;
int sizeend = st.IndexOf("MB\";", sizestart);
// Get Product URL
int productUrlstart = st.IndexOf("titleDetails.push(listingArray);" + "\n" + "var listingArray = new Object();" + "\n" + "</script>" + "\n\n" + "<a href=\"") + ("titleDetails.push(listingArray);" + "\n" + "var listingArray = new Object();" + "\n" + "</script>" + "\n\n" + "<a href=\"").Length;
int productUrlend = st.IndexOf("\" class=\"prod\">", productUrlstart);
string productUrl = st.Substring(productUrlstart, productUrlend - productUrlstart);
productend = sizeend;
if (sizeend - sizestart > 50)
{
int sizeend2 = st.IndexOf("K\";", sizestart);
string productsize = st.Substring(sizestart, sizeend2 - sizestart);
productsize = productsize.Replace(".", ",");
string assembled = productname + ";" + productprice + ";" + productsize + ";" + productUrl;
writer(assembled);
updateInfo2(number);
}
else
{
string productsize = st.Substring(sizestart, sizeend - sizestart);
productsize = productsize.Replace(".", ",");
string assembled = productname + ";" + productprice + ";" + productsize + ";" + productUrl;
writer(assembled);
updateInfo2(number);
}
}
}
}
else if (comboBox1.SelectedItem.ToString() == "b")
{
MessageBox.Show("Bingo");
}
//MessageBox.Show(comboBox1.SelectedItem.ToString());
}
static void writer(string obj)
{
FileStream file = new FileStream("contacts.txt", FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(file);
sw.WriteLine(obj);
sw.Close();
file.Close();
}
}
.
.
.
Hvis nogen har noget kode liggende eller et forslag der kan være behjælpelig så er i meget velkommende til at skrive et forslag.
