Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и сети

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
xhugo
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 73
#1

Парсинг страны на GeoIP - Delphi

14.01.2011, 13:58. Просмотров 1618. Ответов 10
Метки нет (Все метки)

Не получается спарсить текст такого вида:
HTML5
1
2
<td align="right"><span class="arial">Country code:</span></td>
                RU (RUS)</td>
нужно выдрать RU (RUS)

Пробовал по разному, а так сайт:http://geoiptool.com
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2011, 13:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Парсинг страны на GeoIP (Delphi):

GeoIP. Получить название страны по двухсимвольному коду - PHP
Не нашел такую функцию, которая из кодов 'RU', 'TH', получает название страны - Russia, Thailand. Есть такая или опять городить...

Образовать массив, индексами которого являются страны, а элементами - множества городов каждой страны - Turbo Pascal
Образовать массив, индексами которого являются страны, а элементами - множества городов каждой страны. Разработать процедуры, которые...

PL SQL функция для определения страны по коду страны - Oracle
Как написать pl sql функцию для определения кода страны? Например есть номер 7 922 555 1234 (Россия) и 77021234567 (Казахстан). У...

Составить программу, которая бы выдавала по названию страны название столицы этой страны (использовать не менее 6-7 названий). - C++
Составить программу, которая бы выдавала по названию страны название столицы этой страны (использовать не менее 6-7 названий). Как?...

Определить, через сколько лет население первой страны превзойдет население второй страны - C (СИ)
Задача такая: Население 2-х стран равно N1 и N2, соответственно прирост P1 и P2. Население N1 &lt; N2, а P1 &gt;P2. Определить, через сколько лет...

GeoIP - PHP Сети
Каким образом можно определить страну по айпи адресу ? может есть уже готовые функции у когото?

10
smw1975
54 / 54 / 2
Регистрация: 15.12.2010
Сообщений: 258
14.01.2011, 14:14 #2
эээ, в смысле не получается???
не знаете как найти эту строку или сервак по другому отдает?
Если первое - пользовать Pos и PosX (или регулярки)
если второе - так код смотреть надо, хотя и в первом случае не помешает
1
xhugo
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 73
14.01.2011, 14:48  [ТС] #3
в смысле я пробовал Pos и PosX у меня не получилось.
Хотел посмотреть как у вас получится это сделать
0
smw1975
54 / 54 / 2
Регистрация: 15.12.2010
Сообщений: 258
14.01.2011, 15:00 #4
Delphi
1
2
3
startPos := Pos('<td align="right"><span class="arial">Country code:</span></td>', str);
endPos := PosEx('</td>', str, startPos + 63);
Countru := Trim(MidStr(str, startPos, endPos - startPos - 63));
Как то вот так, писал сразу сюда, так что не проверял
1
xhugo
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 73
14.01.2011, 15:18  [ТС] #5
Не сработало,
выводит <td align="right"><span class="arial">Country code:</span
Delphi
1
2
3
4
5
6
7
8
9
 var
 startPos,endPos:integer;
 str, Countru:string;
begin
str:=idhttp1.get('http://geoiptool.com/');
  startPos := Pos('<td align="right"><span class="arial">Country code:</span></td>', str);
endPos := PosEx('</td>', str, startPos + 63);
Countru := Trim(MidStr(str, startPos, endPos - startPos - 63));
memo1.lines.add(Countru);
0
smw1975
54 / 54 / 2
Регистрация: 15.12.2010
Сообщений: 258
14.01.2011, 15:37 #6
блин, а посмотреть по отладке ?
Я просто чуть ошибся
Delphi
1
2
3
4
5
6
str:=idhttp1.get('http://geoiptool.com/');
  startPos := Pos('<td align="right"><span class="arial">Country code:</span></td>', str);
  startPos := PosEx('<td align="left" class="arial_bold">', str, startPos + 63);
  endPos := PosEx('</td>', str, startPos + 36);
  Countru := Trim(MidStr(str, startPos + 36, endPos - startPos - 36));
  memo1.lines.add(Countru);
1
xhugo
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 73
14.01.2011, 15:53  [ТС] #7
ok

только вот почему пусто выводит ()
а если зайти то все норм
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
   var
 startPos,endPos:integer;
 str, Countru:string;
begin
 str:=idhttp1.get('http://geoiptool.com/?IP=95.52.112.168/');
  startPos := Pos('<td align="right"><span class="arial">Country code:</span></td>', str);
  startPos := PosEx('<td align="left" class="arial_bold">', str, startPos + 63);
  endPos := PosEx('</td>', str, startPos + 36);
  Countru := Trim(MidStr(str, startPos + 36, endPos - startPos - 36));
  memo1.lines.add(Countru);
 
end;
0
smw1975
54 / 54 / 2
Регистрация: 15.12.2010
Сообщений: 258
14.01.2011, 15:56 #8
Delphi
1
 str:=idhttp1.get('http://geoiptool.com/?IP=95.52.112.168');
1
xhugo
1 / 1 / 0
Регистрация: 26.09.2010
Сообщений: 73
14.01.2011, 16:56  [ТС] #9
ну почему тут то пусто
должно быть норм а ()
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
 
      startPos,endPos,i:integer;
 str, Countru:string;
begin
 for i:=0 to mainform.Memo4.Lines.Count-1    do
 begin
        idhttp1.Create(nil);
 
 
 
 str:=idhttp1.get('http://geoiptool.com/?IP='+mainform.Memo8.Lines[i]);
  startPos := Pos('<td align="right"><span class="arial">Country code:</span></td>', str);
  startPos := PosEx('<td align="left" class="arial_bold">', str, startPos + 63);
  endPos := PosEx('</td>', str, startPos + 36);
  Countru := Trim(MidStr(str, startPos + 36, endPos - startPos - 36));
  memo8.lines.add(Countru);
 
end;
0
smw1975
54 / 54 / 2
Регистрация: 15.12.2010
Сообщений: 258
14.01.2011, 17:10 #10
пара провакационных вопросов:
1. сами пытались понять почему не получается, если да, то как именно
2. такое страшное слова как "снифер" кога нибуть слышали? В частности HTTPAnalyzer или аналог?
0
WestSide072
37 / 15 / 1
Регистрация: 15.07.2010
Сообщений: 320
18.01.2011, 14:06 #11
Delphi
1
2
3
Memo1.Text:=IdHttp1.Get('http://geoiptool.com/?IP=195.0.0.1');
Memo1.Text:=Copy(Memo1.Text,Pos('<td align="right"><span class="arial">Country code:</span></td>',Memo1.Text)+63,Pos('<td align="right"><span class="arial">Region:</span></td>',Memo1.Text)-Pos('<td align="right"><span class="arial">Country code:</span></td>',Memo1.Text)-63);
Edit1.Text:=Copy(Memo1.Text,Pos('<td align="left" class="arial_bold">',Memo1.Text)+36,Pos('</td>',Memo1.Text)-Pos('<td align="left" class="arial_bold">',Memo1.Text)-36);
0
18.01.2011, 14:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 14:06
Привет! Вот еще темы с ответами:

GEOIP на Centos - RedHat, Fedora Linux
Всем привет! Кто работал с такой темой - есть VPS, на нем сайт. Хочу использовать на сайте сервис Maxmind &quot;GeoIP2 Точность: Город&quot; -...

GeoIP и IIS - IIS
Хочу перенаправлять пользователей с помощью GeoIP на разные страницы в зависимости от региона. Для Apache у меня есть пример: ...

MaxMind GeoIP - C#
Нужно сделать распознание страны и города по IP. Я взял базу отсюда: http://www.maxmind.com - база стран и городов. Там есть 2 csv...

Debian 7 geoip - Debian Linux
Здравствуйте! С линуксом я не дружу, но чуть-чуть понимаю. В общем у меня появилась потребность установить geoip и отсеять трафик с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru