программный Поиск по картинке через google

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

программный Поиск по картинке через google

Сообщение Invader » 07.08.2012 (Вт) 17:57

столкнулся с проблемой есть ссылка на изображение
http://cdn77.boyandin.ru/files/forest-only-1-480.jpg
есть сервис от гугл поиск похожей картинки по ссылке
после подстановки я наблюдал следующий адресс запроса
вернее сказать значение get запроса
GET image_url=http%3A%2F%2Fcdn77.boyandin.ru%2Ffiles%2Fforest-only-1-480.jpg&=%D0%9F%D0%BE%D0%B8%D1
%81%D0%BA&encoded_image=&image_content=&filename=&num=10&hl=ru&bih=165&biw=1024

сам УРЛ формировался с редиректом гугла
http://www.google.com/searchbyimage?image_url=http%3A%2F%2Fcdn77.boyandin.ru%2Ffiles%2Fforest-
only-1-480.jpg&=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&encoded_image=&image_content=&filename=&num=10&hl=ru&bih=165&biw=1024

мой код для запроса выглядел
так
Код: Выделить всё
Imports System.Net
Imports System.IO
Imports System.Text.RegularExpressions


Public Class Form1


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Create a request for the URL.       
        Dim request As WebRequest = WebRequest.Create("http://www.google.com/searchbyimage?image_url=http://cdn77.boyandin.ru/files/forest-only-1-480.jpg")

        ' Get the response.
        Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)

        ' Get the stream containing content returned by the server.
        Dim dataStream As Stream = response.GetResponseStream()
        ' Open the stream using a StreamReader for easy access.
        Dim reader As New StreamReader(dataStream)
        ' Read the content.
        Dim responseFromServer As String = reader.ReadToEnd()
        ' Display the content.
        TextBox2.Text = responseFromServer 'ХТМЛ код страницы но не той куда должен выходить гугл с результатами поиска
        ' Cleanup the streams and the response.
        reader.Close()
        dataStream.Close()
        response.Close()
    End Sub


End Class


я понимаю что запрос формирую не верный, кто укажет на правильный путь,
задача сводиться к тому что я подбрасываю гуглу ссылки на фото и ожидается ответ-страница для парсинга с найденными результатами похожих изображений.
страница результата поиска для данной сылки имеет адрес
http://www.google.com/search?tbs=sbi:AMhZZiuz2XN50sJm_1F3UZ0OEHGOfn4-GdJsWE-AZWBJ3yoiOExKg-
gzze4_1sbJGFSpaKpOeYdQU3iNlsq_1WRaoXfus37nCuO4oKZWE-kQxmTSF-
8K6ZiarxHrwVONpwybfNXCTDwbA_1uplSf5gPfFyoAh61rrd4o6h0-VQI4BB633xove4YGTE52c1MUslDHs8Wc-
lY_1KI3NHwjH_10N6hHs2rD_1S9Q5jH90wxEISRDtulJgyoIP1v5ceiBXFHnv4Qpd3WQSsejU-
iRpb9gfd06oevoECuQxHRYLJWgSvGy5_1yLaPc8xhnDqKui6Q4TSvaiACunoodXLL8SeLKLGwqLSJnDUe_1pPWi7zDkuOmwiitRpekN
e0OrSHFIATTJCtrfmKgCvdcCrhQ4oN5rRAvHtHlw2QIs4rmaR58k7n5rS1jHHHv_1mobQM3mM1eOA_1WV94vCZTG2SzNbKkkeFjYL
CFWug3cJJqF9Zvf6TVBKGON5BRx3GoiWiSqFfsRDzesndGQ6R_19jFAEfPsxL-
RQry50VOi0CmAIESUCByXN6sHpCotrR9fcMIc2DpzkuYT09fcWdbop4-hjlOvFG9lHjpZDaYZzm-
anPBTzaDxRmVBmkA7j0IT3GiW7fHRH1tAQ3QHp8IVsw8AHTA_1geMPxXPnMDDp7sQcQIhLtYjBWzZJYaz9M9FtKWXj0SLlE1esAJqL
C8bHLJY8OBZNUnNRjRhRfoyQ283YDW6fMWZz7kV45BBWDKpUOHpxGxiLEtUuDI6gSvY5WRFzxqGhTuLYskw6qCSW5ULjcvFpSJXp
Nr8gRsD4mvbavo7kyJd2ZhOL2iJaEZCAxZWTDADlgWVkDQqo8EEaB46aTC-
v6EWNhRQEHHZ7Fx2wUN7ix63dAP9iKoaokhHCelwydezXv6EGyPkZEHy372tpz5_1KVTVKzyScEKiuELkvlQXmwmUdOnGSL0YWeo8X
z3gI3O2ZXd-auX7Vm-snzm6n-ecqHn5jUWQWWs3x5nTtScLgAhjzCLOqUq8p-
rJs6L2fM_1WVtKiLzlhC4s94PI4OgBBletUdZGcm2LlFGMj1WZmJXwQfoxL0VJUjJ5Cy-
91SwyHYNh0jx61fWo3hSA8IplYxdDLely6JQXQ7bOhsEL8-3IH0G6m9oBWf-
Yhxrt5CU54MpeQdqJH97tvz5sgrh1kAIgzH8zkjwDCveW7_1cRxNFBqYoPnuWQiSCFNrk_1RgFYYgkbJm3kO1Cc6ATMbg1TcarPNeO
xAHQK0WUB_11YTOsfLBnc7RAThTCWV7VNUu7sDcha9g8USC43d_1jktrWQ_1VzqC5YZ0rLdnBNyW-tgf6cxRkpsMmp-
UVcBDCoDOLfV7&num=10&hl=ru&bih=165&biw=1024
Последний раз редактировалось Invader 08.08.2012 (Ср) 2:43, всего редактировалось 1 раз.
умён и жаден,
характер отсуствует

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: программный Поиск по картинке через google

Сообщение FireFenix » 07.08.2012 (Вт) 20:42

http://google.ru/imghp?hl=ru&q=тут_линк_на_картинку?
или
http://www.google.com/searchbyimage?image_url=тут_линк_на_картинку
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 07.08.2012 (Вт) 21:57

благодарю за ответ вторая сылка, я на неё тоже обращал внимание, но при подстановке в браузере мозила переход нормальный, а вот через код выбрасывает на одну и туже страницу вернее её содержание а имено https://www.google.ru/
да и ещё я заметил что интернет експлоер 6 после ввода в панель навигации
http://www.google.com/searchbyimage?image_url=http://cdn77.boyandin.ru/files/forest-only-1-480.jpg
выводит тоже на начальную страницу гугл

может проблема в коде?
умён и жаден,
характер отсуствует

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: программный Поиск по картинке через google

Сообщение FireFenix » 08.08.2012 (Ср) 2:00

FF13, IE9 нормально переходят, хз в чём проблема
IE6 морально устарел, лучше бы его и не было :D
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 08.08.2012 (Ср) 2:27

а с чем же связан неверный переход в коде, прошу прощения но найдите время взгляните на код он же не большой,
не гугл ни другие ресурсы ответа не дают, может специалисту будет понятна ошибка???
VS 2008, XPSP3
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.08.2012 (Ср) 8:06

Опера тоже отправляется на главную страницу :(
Проблема в user-agent'е.

Работающий код:
Код: Выделить всё
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions

Public Class Form1

Private Tabs As New TabControl With {.Dock = DockStyle.Fill}

Private SearchIt = "http://bbs.vbstreets.ru/download/file.php?avatar=6157_1320574933.jpg"

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Me.Controls.Add(Tabs)

  Dim Request As HttpWebRequest = HttpWebRequest.Create("http://www.google.com/searchbyimage?image_url=" & SearchIt)
  Request.UserAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11"
  Dim Response As HttpWebResponse = Request.GetResponse()

  MsgBox(Response.ResponseUri.ToString())

  Dim Result As String
  Using Reader As StreamReader = New StreamReader(Response.GetResponseStream(), Encoding.UTF8)
    Result = Reader.ReadToEnd()
  End Using
  Response.Close()

  For Each Match As Match In Regex.Matches(Result, "'data:image/jpeg;base64,(.*?)'")
    Using Pct As New MemoryStream(Convert.FromBase64String(Regex.Replace(Match.Groups(1).Value, "\\x[\dA-Fa-f][\dA-Fa-f]", Function(M As Match) Chr("&H" & M.Value.Substring(2)))))
      Tabs.TabPages.Add(New TabPage() With {.BackgroundImage = Bitmap.FromStream(Pct), .BackgroundImageLayout = ImageLayout.Zoom})
    End Using
  Next Match
End Sub

End Class

UPDATE [+1 час]: Код обновлён.

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 08.08.2012 (Ср) 14:18

благодарю за очень подробный ответ
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 09.08.2012 (Чт) 18:04

есть ещё банальный вопрос, примеров море но не сработал ни один
регекспом надо отловить ссылку, ссылка имеет общий вид
<a href="/imgres?imgurl=http://bgstay.com/images/photos/big_thumb_10634_1.jpg&amp;imgrefurl=http:
//bgstay.com/en-r-7-north_black_sea_coast_bulgaria&amp;h=96&amp;w=149&amp;sz=11&amp;tbnid=jZRePKJFVUglpM&
amp;tbnh=76&amp;tbnw=119&amp;prev=/search%3Fq
%3D%25D0%25B0%25D0%25B4%25D0%25B8%25D1%2581%26tbm%3Disch%26tbo%3Du&amp;zoom=1&amp;q=%D0%B0%D0%B4%D0%B8
%D1%81&amp;usg=__1y4RX8Z-8LgjgLlg6txVv269M4o=&amp;sa=X&amp;ei=4cAjUI2LJaWC4gSYvYG4AQ&amp;ved=0CGoQ8g0">

жирным выделил что надо отловить!
я писал так
Код: Выделить всё
Using Reader As StreamReader = New StreamReader(Response.GetResponseStream(), Encoding.UTF8)
            Result = Reader.ReadToEnd()
            TextBox2.Text = Result
            TextBox1.Text = TextBox1.Text + "   " + Regex.Match(Result, "&lt;a\s*href=.*?(http.*?jpg)[|&gt;]").Value
        End Using

не отлавливает :oops:
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.08.2012 (Чт) 18:15

Invader писал(а):Regex.Match(Result, "&lt;a\s*href=.*?(http.*?jpg)[|&gt;]").Value

Regex - не html. C какого перепугу там оказалось &lt;, когда в твоём примере там <?

Invader писал(а):[|&gt;]

Тоже фигня.

Надо что-то типа (не проверял): href=.*?imgurl=(.*?)((&amp;)|&)imgrefurl, после чего взять первую группу.

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 09.08.2012 (Чт) 21:28

прости с группами вообще не понимаю, вроде как первые скопки программно указать? если можно строчкой на примере,
извиняюсь за невежество...
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.08.2012 (Чт) 21:45

Invader писал(а):если можно строчкой на примере

А посмотреть мой код чуть выше?

PS: Reader не стоит держать, когда он уже не нужен.

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 09.08.2012 (Чт) 23:15

я про это и говорю всё было понятно пока не появились записи в Вашем коде
Код: Выделить всё
For Each Match As Match In Regex.Matches(Result, "'data:image/jpeg;base64,(.*?)'")

в тексте рег. вырожение не было обнаружено, (хотя я мог и пропустить) и что оно означает не понимаю, одно ясно по рабочему коду это превьюшки,
а вот строчки далее, просто дали мне понять что я даже плавать не научился
Код: Выделить всё
MemoryStream(Convert.FromBase64String(Regex.Replace(Match.Groups(1).Value, "\\x[\dA-Fa-f][\dA-Fa-f]", Function(M As Match) Chr("&H" & M.Value.Substring(2)))))

вот моя реализация не рабочая, так как вроде страницу тянет нужную с результатами поиска но ссылки почему то уже не ru а com??? и так же не понятно, не находит нужных href о которых я говорил выше...
самое обидное что с обычных страниц без переадресаций, только ленивый не вытащит ссылку, а здесь стопор....
Вложения
picture google.zip
(20.74 Кб) Скачиваний: 219
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.08.2012 (Пт) 8:25

Как ты ухитрился упаковать этот архив, что для одного из файлов 7Zip пишет, что тип сжатия неподдерживаемый?

Регулярка, которую я написал замечательно работает.

GoolePics [.NET4].7z
Код & compile.bat & exe
(6.89 Кб) Скачиваний: 201

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re:

Сообщение Invader » 10.08.2012 (Пт) 13:11

Qwertiy писал(а):Как ты ухитрился упаковать этот архив, что для одного из файлов 7Zip пишет, что тип сжатия неподдерживаемый?

Регулярка, которую я написал замечательно работает.

GoolePics [.NET4].7z

это не я ухитрился, а ничего умнее не придумал как выбрать команду экспорт шаблона в visual studio 2010
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.08.2012 (Пт) 13:16

Invader писал(а):это не я ухитрился, а ничего умнее не придумал как выбрать команду экспорт шаблона в visual studio 2010

Не придумал тупо упаковать папку любым архиватором (или даже проводником)? Ого!
Я с ним минут 5 повозился, потом забил и взял только код формы.

Код посмотрел?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.08.2012 (Пт) 13:33

Invader писал(а):visual studio 2010

Так у тебя VS2010 или VS2008?

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re:

Сообщение Invader » 10.08.2012 (Пт) 18:07

Qwertiy писал(а):
Invader писал(а):visual studio 2010

Так у тебя VS2010 или VS2008?

уже да, хотя и vs2008 expres остался :shock:

вот вопрос я тут не много Ваш код поменял, объясню
1 нужно было отсеять ссылки по размеру, в сылках есть параметр "sz=" так вот, его значение определённого диапазона
устраивает остальные нет
Код: Выделить всё
  Dim ves As Integer
        Dim Links As New List(Of String)
        For Each Match As Match In Regex.Matches(Result, "td valign=.*?top.*?href=.*?imgurl=(.*?)((&amp;|&)tbnid.*?)imgrefurl")
            ves = CInt(Regex.Match(Match.Groups(1).Value, "sz=(.*?)").Value)
            textbox1.text = ves
            If ves > 30 Or ves < 70 Then
                Links.Add(Match.Groups(1).Value)
            Else : GoTo 5
            End If
     
        Next Match
5:
        textbox2.text = String.join(vbCrLf, Links)

        Me.WindowState = FormWindowState.Maximized

тут по ошибкам кода 2 вопроса:
1 как правильно записать строчку
ves = CInt(Regex.Match(Match.Groups(1).Value, "sz=(.*?)").Value)
так чтоб переменная ves принимало значение к примеру sz="50" тогда ves=50
почему при моей записи выдает ошибку о невозможности преобразования стринговой в интежер, хотя я понимаю значение ves у меня равно "sz="?
я пытался записать так
Код: Выделить всё
Dim ves As Match
            ves = Regex.Match(Match.Groups(1).Value, "sz=(.*?)")
            textbox1.text = ves.Groups(1).value

но тогда ничего не находит -textbox1.text = ""
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.08.2012 (Пт) 18:35

Invader писал(а):очему при моей записи выдает ошибку о невозможности преобразования стринговой в интежер

Потому что строка "sz="50"" - это не число. Бери первую группу, а не всё совпадение.

Invader писал(а):sz=(.*?)

Нежадное поедание символов. Какая минимальная строка соответствует этому шаблону? "sz=". Какая её часть соответствует выражению в скобках? Пустая строка. Вот её ты и получаешь. Добавь ограничитель.

Invader писал(а):Else : GoTo 5

Есть же Exit For... И почему метка числовая?

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re:

Сообщение Invader » 10.08.2012 (Пт) 21:16

Qwertiy писал(а):
Invader писал(а):очему при моей записи выдает ошибку о невозможности преобразования стринговой в интежер

Потому что строка "sz="50"" - это не число. Бери первую группу, а не всё совпадение.

так вся группа и не бралось а лишь строчка "sz=", что значит первую группу, как обозначить!?

Qwertiy писал(а):
Invader писал(а):sz=(.*?)

Нежадное поедание символов. Какая минимальная строка соответствует этому шаблону? "sz=". Какая её часть соответствует выражению в скобках? Пустая строка. Вот её ты и получаешь. Добавь ограничитель.

как выглядит ограничитель - конец строки!?

Qwertiy писал(а):
Invader писал(а):Else : GoTo 5

Есть же Exit For... И почему метка числовая?

ну во первых ещё плавать учусь, а второе имеет ли значение метки, если да то как бы это правильней прописать...
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.08.2012 (Пт) 21:52

Invader писал(а):что значит первую группу, как обозначить!?

Скобками! У тебя уже обозначено.

Invader писал(а):как выглядит ограничитель - конец строки!?

1. Конец строки обозначается $.
2. Зачем ставить нежадную группировку, если тебе надо до конца строки?
3. Почему тебе вообще не написать sz="?(\d+)?
4. Читай Википедию.

Invader писал(а):а второе имеет ли значение метки, если да то как бы это правильней прописать...

Имя метки стоит делать осмысленным словом и меток не должно быть много. Но я не являюсь их противником.

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 10.08.2012 (Пт) 22:17

я не понимаю что такое не нужная группировка!!!!
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.08.2012 (Пт) 22:19

Invader писал(а):я не понимаю что такое не нужная группировка!!!!

А я не понимаю, что значит эта фраза...

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re:

Сообщение Invader » 10.08.2012 (Пт) 22:38

Qwertiy писал(а):2. Зачем ставить нежадную группировку, если тебе надо до конца строки?

нежадную группировку-Я идиот! Убейте меня, кто-нибудь!?
что ЭТО!, направте на путь истинный
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 10.08.2012 (Пт) 22:54

кто то выходит за меня, тема открыта, меняю вход, админы проверти адрес входа
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 10.08.2012 (Пт) 23:09

Invader писал(а):нежадную группировку

Я имел в виду нежадную квантификацию. Ты её используешь когда ставишь .*?. Она означает, что надо найти минимальное вхождение, а не максимальное, как при .*. Подробнее в Википедии.

PS: Нежадная и ненужная - что-то совсем не похоже. Пиши вопросы внимательнее.

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 11.08.2012 (Сб) 0:01

так я не понял как правильно задать переменную
это верно
Код: Выделить всё
Dim ves As Match
            ves = Regex.Match(Match.Groups(1).Value, "sz=(.*)")
            textbox1.text = ves.Groups(1).value

либо это
Код: Выделить всё
Dim ves As Integer
            ves = CInt(Regex.Match(Match.Groups(1).Value, "sz=(.*)").Value)
    textbox1.text = ves
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 11.08.2012 (Сб) 0:10

понял, очень понял, главное не ленитЪся
умён и жаден,
характер отсуствует

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.08.2012 (Сб) 0:13

А сам проверить не можешь?
Я бы написал ves = Regex.Match(Match.Groups(1).Value, "sz=.*?(\d+)").Groups(1).Value

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.08.2012 (Сб) 0:14

Invader писал(а):понял, очень понял, главное не ленитЪся

Наконец-то!

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Re: программный Поиск по картинке через google

Сообщение Invader » 11.08.2012 (Сб) 0:37

решено, в очередной раз благодарю за просвещение...
Код: Выделить всё

Dim ves As Integer
        Dim Links As New List(Of String)
        For Each Match As Match In Regex.Matches(Result, "td valign=.*?top.*?href=.*?imgurl=(.*?)((&amp;|&)tbnid.*?)imgrefurl")
            ves = CInt(Regex.Match(Match.Groups(1).Value, "sz=(\d+)").Groups(1).Value)
            textbox1.text = ves.tostring
            If ves > 70 Or ves < 30 Then
                GoTo 4
            Else
                Links.Add(Match.Groups(1).Value)
            End If

4:
        Next Match

        textbox2.text = String.join(vbCrLf, Links)
     


        Me.WindowState = FormWindowState.Maximized
умён и жаден,
характер отсуствует

След.

Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

    TopList