Witam.
W jaki sposób można pobrać IP i porty ze strony http://hidemyass.com/proxy-list/ ?
tam każda cyferka jest w osobnym <span>, jak to można pobrać ?
Pobranie numerów IP i portów, zawartych w znacznikach <span>
- Rejestracja: dni
- Ostatnio: dni
- Postów: 95
- Rejestracja: dni
- Ostatnio: dni
A jak sądzisz po kiego tak zrobili?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2512
Poza tym, że są powciskane niewidoczne na stronie liczby pomiędzy poszczególne części adresu. Radzę odpuścić sobie tą stronę, bo mogą utrudnienia w parsowaniu z czasem nawarstwiać
- Rejestracja: dni
- Ostatnio: dni
- Postów: 95
Sarrus napisał(a):
Poza tym, że są powciskane niewidoczne na stronie liczby pomiędzy poszczególne części adresu. Radzę odpuścić sobie tą stronę, bo mogą utrudnienia w parsowaniu z czasem nawarstwiać
a z tej strony byloby latwiej ?
http://free-proxy-list.net/
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Tuchów
- Postów: 12270
No pewnie że łatwiej - całe adresy IP i numery portów są zapisane w poszczególnych komórkach tabeli; Łatwiej nie oznacza łatwo, bo i tak trzeba wiedzieć jak parsować źródło strony i wyłuskać odpowiednie dane;
Poza tym nie napisałeś czym chcesz przetwarzać źródło strony, więc podaj jakiś język/technologię.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gorlice
Na obu stronach to do zrobienia tylko na pierwszej więcej zabawy bo parsując IP trzeba brać pod uwagę tylko liczby pomiędzy tagami mającymi style="display:inline" lub jedną z 3 nazw klas określonych w style (wyżej) .nazwa_losowa{display:inline}.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 95
język w którym chce pisać to VB, lecz nie wiem jak to wyciągnąć z tabeli =/
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gorlice
Dim sHTML As String = RichTextBox1.Text 'ja dla testu mam kod HTML w RichTextBox
Dim myRegex As New Regex("<tr><td>([0-9\.]+)</td><td>([0-9]+)</td>")
Dim myMatches As MatchCollection = myRegex.Matches(sHTML)
For Each myMatch As Match In myMatches
ListBox1.Items.Add(myMatch.Groups(1).Value & ":" & myMatch.Groups(2).Value) 'Groups(1) to IP Groups(2) to Port
Next
EDIT Gdybyś nie wiedział trzeba Imports System.Text.RegularExpressions
- Rejestracja: dni
- Ostatnio: dni
Zapomniałem o portach :D. Ale niech to będzie zadanie domowe, najciekawszą część zrobiłem za ciebie. No i nie w jakiś Visual Basicach ;). Wymaga HtmlAgilityPack.
IEnumerable<string> GetProxies(string source)
{
var document = new HtmlDocument();
document.LoadHtml(source);
return from row in document.DocumentNode.SelectNodes(@"//table[@id='listtable']/tr/td[2]/span")
let classes = GetHideClasses(row.SelectSingleNode("./style").InnerText)
let parts = from element in row.SelectNodes("./*[not(self::style)] | ./text()")
where IsElementVisible(element, classes)
select element.InnerText
select string.Concat(parts);
}
bool IsElementVisible(HtmlNode node, IEnumerable<string> hideClasses)
{
string style = node.GetAttributeValue("style", null);
if (style != null && style.Contains("display:none"))
return false;
string @class = node.GetAttributeValue("class", null);
if (@class != null && hideClasses.Contains(@class))
return false;
return true;
}
IEnumerable<string> GetHideClasses(string stylesheet)
{
return Regex.Matches(stylesheet, @"\.(?<class>.+)\{display:none\}")
.OfType<Match>()
.Select(m => m.Groups["class"].Value);
}