1 (изменено: jullap, 2016-11-22 10:57:50)

Тема: AHK: выгрузка результатов поиска

Решаю важную для меня задачу:

Есть результаты поиска в гугл в таком виде:
https://www.google.ru/search?hl=sv&newwindow=1&q=HP%20Inc.&tbs=lr:lang_1no&lr=lang_no&gws_rd=ssl#lr=lang_no&newwindow=1&hl=sv&tbs=lr:lang_1no&q=HP+Inc.+645+G2+%2F+A+series+

В итоге нужно получить результаты поиска в таком виде без шелухи так сказать:
https://www.nordnet.no/mux/web/marknaden/.../index.html?identifier...
https://www.ig.com/.../hewlett-packard-co-HPQ-U...
https://www.atea.no/om-atea/.../hp-inc/
...
...
...

Пока есть только неудобный вариант веб запроса в экселе, но может быть есть другой более простой, удобный и давно известный способ?

Post's attachments

выгрузка.xlsx 16.22 kb, 4 downloads since 2016-11-22 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: выгрузка результатов поиска

var := "ёлка"

ComObjError(False)
oIE := ComObjCreate("InternetExplorer.Application")
oIE.visible := True
oIE.navigate("http://google.com/#q=" URIEncode(var))
While !InStr(oIE.document.documentElement.OuterHtml, "class=""r""")
{
   if InStr(oIE.document.documentElement.OuterHtml, "<div class=""med card-section"">")
   {
      msgbox Ничего не нашлось
      ExitApp
   }
   Sleep 100
}
rElements := OIE.document.getElementsByClassName("r")
loop % rElements.Length
{
   aElement := rElements[A_Index-1].getElementsByTagName("a")
   url := aElement[0].href
   urlList .= url . "`n"
}
msgbox % urlList
return


URIEncode(Str)
{
   b_Format:=A_FormatInteger
   SetFormat, IntegerFast, H
   Loop, % StrPutVar(Str, Var, "UTF-8")
   {
      Ch:=NumGet(Var, A_Index-1, "UChar")
      If Ch=0
         Break
      If (Ch>0x7f Or Ch<0x30 Or Ch=0x3d)
         s.="%"((StrLen(c:=SubStr(Ch, 3))<2) ? "0"c:c)
      else
         s.=Chr(Ch)
   }
   SetFormat, IntegerFast, % b_Format
   Return, s
}

StrPutVar(string, ByRef var, encoding = "CP0")
{
    ; Ensure capacity.
    VarSetCapacity( var, StrPut(string, encoding)
        ; StrPut returns char count, but VarSetCapacity needs bytes.
        * ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
    ; Copy or convert the string.
    return StrPut(string, &var, encoding)
}

3 (изменено: Flasher, 2016-11-23 03:40:07)

Re: AHK: выгрузка результатов поиска

Я бы так делал:

+ VBScript
Title = " Поиск в Google"
URL = Trim(InPutBox(String(5, vbCr) & "Введите текст:", Title))
If URL = "" Then WScript.Quit

With CreateObject("ScriptControl")
  .Language = "JScript" : URL = "https://www.google.ru/search?&q="_
  & .Eval("this").encodeURIComponent(URL)
End With

With CreateObject("MSXML2.XMLHTTP.6.0")
  .Open "GET", URL, false : .Send : Text = .Responsetext
End With

With CreateObject("htmlfile")
  .designMode = "on" : .Write Text : .close
  For Each i in .getelementbyid("rso").getElementsByTagName("H3")
    urlList = urlList & VbCrLf & i.getElementsByTagName("a")(0).href
  Next : .close
End With

MsgBox Mid(urlList, 3), 4160, Title & " (результаты)"

4

Re: AHK: выгрузка результатов поиска

Flasher пишет:

Я бы так делал

ScriptControl есть только под 32 бита.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: выгрузка результатов поиска

В SysWOW64 есть вроде.

6

Re: AHK: выгрузка результатов поиска

А как его запускать оттуда из vbs?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: выгрузка результатов поиска

teadrinker

C:\Windows\SysWOW64\cscript D:\test.vbs

Flasher
Я сам не люблю IE, но тут использовал его из-за антиботовской политики гугла.
Когда выдаст ошибку - значит нужно вводить капчу.

link := "https://www.google.ru/search?&q=test"
http := ComObjCreate("Msxml2.XMLHTTP")
loop 1000
{
   http.Open("GET", link, False)
   http.Send()
   a := http.ResponseText
}
msgbox done

8

Re: AHK: выгрузка результатов поиска

А как его запускать оттуда из vbs?

C:\Windows\SysWOW64\wscript.exe C:\ScriptName.vbs

Malcev
А зачем эта проверка? Там от кол-ва обращений зависит?

9

Re: AHK: выгрузка результатов поиска

Доказать, что ты человек.
Зависит от айпи, количества обращений, частоты обращений, возможно, также от поискового запроса.
Но в IE капча тоже выскакивает, правда вроде, чисто зрительно, не так часто, как с Msxml2.XMLHTTP.

10

Re: AHK: выгрузка результатов поиска

Я боюсь, сейчас таким кодом воспользуюсь, и мой IP у них тут же в блэклисте окажется. Ну его от греха подальше.

11

Re: AHK: выгрузка результатов поиска

Malcev Ого!!! Очень круто, спасибо.