Gå til innhold

Linke direkte til spesifikk søkeboks - Skjult søkestreng


Anbefalte innlegg

Heisann.

 

Beklager knotete tittel. Jeg skal forsøke å forklare nærmere. 

 

På sider hvor URL'en til søketreffet ikke er kamuflert kan man enkelt lage en link direkte til søketreffet. F. eks hos IMDB:

 

Her kan man bytte ut Batman med hva man måtte ønske og komme direkte til søketreffene.

 

Lar det samme seg gjøre på sider som f. eks denne: http://www.iata.org/publications/Pages/code-search.aspx. Der uansett hva man søker på så vises kun den samme URL'en. F. eks ved å rote litt i koden og legge til dette i URL-feltet? Som dere kanskje forstår er kunnskapen min om dette lik null. 

 

Dette er koden som gjelder søkeboksen:

<input name="ctl00$SPWebPartManager1$g_e3b09024_878e_4522_bd47_acfefd1000b0$ctl00$txtSearchCriteria"
type="text" maxlength="255" 
id="ctl00_SPWebPartManager1_g_e3b09024_878e_4522_bd47_acfefd1000b0_ctl00_txtSearchCriteria" 
class="textBoxOnBlur" onfocus="javascript:this.className='textBoxOnFocus';
" onblur="javascript:this.className='textBoxOnBlur';">

Grunnen til at jeg ønsker dette er at jeg daglig søker opp noe på en nettside og det hadde vært praktisk å kunne klikke på en link slik at jeg kom direkte til søketreffet i stedet for å måtte gå inn på siden, fylle inn søkeordet, trykke søk og vente på resultatet. 

 

Edit2: Informasjonen jeg søker opp har jeg i et Excel-ark. Ønsket mitt er å legge til en linje som henter enkel informasjon fra en celle, legger det til URLen som tar meg rett til søkeresultatet når jeg klikker på linken. 

 

For å videreføre eksempelet med Batman blir det slik:

[table]

http://www.imdb.com/find?ref_=nv_sr_fn&q="&TEKST(A2;)&"&s=all"[/table]

 

Her henter B2 informasjon fra A2 og gir en klikkbar link. 

 

 

 

 

Edit: Jeg redigerte koden litt med linebreak så det ser litt ryddigere ut. 

Endret av LtdEdFred
Lenke til kommentar
Videoannonse
Annonse

det letteste er kanskje å lage en extension til browseren du bruker, de fleste (alle?) støtter å kunne injecte javascript via f.eks et ikon på addresselinja. Noe ala dette:

document.querySelector(".iataStandardForm select").value = "ByLocationCode";
document.querySelector(".iataStandardForm input").value = "SAS";
document.querySelector("form").submit();
Endret av Enthroner
Lenke til kommentar

Takk for svar, Enthroner. Jeg er dessverre redd du overvurderer meg. Å lage en egen extension tror jeg ikke jeg skal begi meg ut på da det blir litt for komplisert. Jeg utelot også litt informasjon i første tråd om hvordan jeg tenkte å utføre disse søkene som jeg ser nå burde vært med:

 

Informasjonen jeg søker opp har jeg i et Excel-ark. Ønsket mitt er å legge til en linje som henter enkel informasjon fra en celle, legger det til URLen som tar meg rett til søkeresultatet når jeg klikker på linken. 

 

For å videreføre eksempelet med Batman blir det slik:

[table]

http://www.imdb.com/find?ref_=nv_sr_fn&q="&TEKST(A2;)&"&s=all"[/table]

 

Her henter B2 informasjon fra A2 og gir en klikkbar link. 

Lenke til kommentar

Ikke ofte man ser noen klare å peke så nøyaktig til relevant kode uten å kunne det selv, så godt jobbet! :) 

 

Det er to problemer med å skulle ha en link:

  1. Søket her er laget med POST som betyr at browseren din sender innholdet til søket i HEADER og ikke fra URL. Det lar seg ikke gjøre å lage en URL som utfører søket mot den siden der direkte.
  2. Siden er laget i WebForms ser det ut til, som betyr at du antakelig må sende en helt komplett HEADER for at den skal se på requestet som gyldig.

Hvis dette er noe du må få til så går det an å lage en 'proxy', altså en liten tjeneste som ligger mellom linken din, og selve søketjenesten. Det er en relativt enkel sak men det er nok desverre ikke så mange av oss som har fritid nok til å gjøre det gratis.

Kanskje en gylden mulighet for deg å lære deg litt (mer?) programmering?

 

Hvis jeg skulle gjort det ville jeg brukt http://phantomjs.org/ og node.js, så kan du lage en webtjeneste som du kjører lokalt og gjør søket for deg.

 

Vil du se søketreffet i browser, eller skal du hente ut noe spesifikk data?

  • Liker 1
Lenke til kommentar
Lar det samme seg gjøre på sider som f. eks denne: http://www.iata.org/...ode-search.aspx. Der uansett hva man søker på så vises kun den samme URL'en. F. eks ved å rote litt i koden og legge til dette i URL-feltet? Som dere kanskje forstår er kunnskapen min om dette lik null. 

F.eks søker på 4444,bruker Selenium fra Python.

Kan kalle PhantomJs fra Selenium etter man ser alt fungere(for og ikke laste nettleser).

For videre parsing kan Selenium retutnere kildekode(driver.page_source),

jeg bruker stort sett Beautifulsoup/lxml til parsing

from bs4 import BeautifulSoup
from selenium import webdriver
import time

#driver = webdriver.PhantomJS('phantomjs')
#driver.set_window_size(1120, 550)
driver = webdriver.Firefox()
url = 'http://www.iata.org/publications/Pages/code-search.aspx'
driver.get(url)
field = driver.find_elements_by_id("ctl00_SPWebPartManager1_g_e3b09024_878e_4522_bd47_acfefd1000b0_ctl00_txtSearchCriteria")[0]
field.send_keys('4444')
time.sleep(3)
driver.find_elements_by_css_selector('#ctl00_SPWebPartManager1_g_e3b09024_878e_4522_bd47_acfefd1000b0_ctl00_butSearch')[0].click()
Informasjonen jeg søker opp har jeg i et Excel-ark.

Skulle jeg ha gjort dette hadde jeg brukt Pandas leser Excel fint med pandas.read_excel().

Output format kan man velg hva man vil Json,SQL,csv...osv.

Endret av snippsat
  • Liker 1
Lenke til kommentar

Ikke ofte man ser noen klare å peke så nøyaktig til relevant kode uten å kunne det selv, så godt jobbet!  :)

 

Vil du se søketreffet i browser, eller skal du hente ut noe spesifikk data?

Hehe, takk for det. Var nok heldig =)

 

Det jeg antar er enklest (hvert fall med det utgangspunkt at det var så enkelt som IMDB-eksempelet) er at for hvert søkeord jeg klikker på så åpnes det en ny fane. Da slipper jeg å behandle noe data som jeg skal ha tilbake, men kan bare lese av nettsiden. 

 

 

Lar det samme seg gjøre på sider som f. eks denne: http://www.iata.org/...ode-search.aspx. Der uansett hva man søker på så vises kun den samme URL'en. F. eks ved å rote litt i koden og legge til dette i URL-feltet? Som dere kanskje forstår er kunnskapen min om dette lik null. 

F.eks søker på 4444,bruker Selenium fra Python.

Kan kalle PhantomJs fra Selenium etter man ser alt fungere(for og ikke laste nettleser).

For videre parsing kan Selenium retutnere kildekode(driver.page_source),

jeg bruker stort sett Beautifulsoup/lxml til parsing

*snip*
Informasjonen jeg søker opp har jeg i et Excel-ark.

Skulle jeg ha gjort dette hadde jeg brukt Pandas leser Excel fint med pandas.read_excel().

Output format kan man velg hva man vil Json,SQL,csv...osv.

 

 

 

Takk for svar begge to. Med mindre det forenkler noe at jeg kun ønsker søketreffet åpnet i nettleseren blir nok dette for mye jobb (spesielt for en som begynner fra scratch) til at det er verdt jobben. Det er ikke veldig viktig for meg, men jeg leter alltid etter måter å automatisere/effektivisere hverdagen på. Så om jeg la inn en time eller to nå for at det skulle være forenklet for alltid hadde jeg gjort det, men det er så mye ukjente ord i svarene deres at det er nok ukesvis med arbeid før jeg nærmer meg noe som helst ;-)

Lenke til kommentar
Det jeg antar er enklest (hvert fall med det utgangspunkt at det var så enkelt som IMDB-eksempelet) er at for hvert søkeord jeg klikker på så åpnes det en ny fane.

Du kan ikke gjøre det sånn på den siden,på den siden gjøres det et Ajax kall til server.

Derfor forandre ikke adressen i adresse feltet seg.
Det første man bør gjøre er og sjekke om det er et API som brukes.
 
Så om jeg la inn en time eller to nå for at det skulle være forenklet for alltid hadde jeg gjort det, men det er så mye ukjente ord i svarene deres at det er nok ukesvis med arbeid før jeg nærmer meg noe som helst ;-)
Ja viss man ikke er noe borti dette er det mye nytt.
Ikke sikkert du får brukt dette,men kan vise automasjon fra Excel til et søk.
Det er ikke så mange linjer med kode til.
import pandas
from bs4 import BeautifulSoup
from selenium import webdriver
import time

#driver = webdriver.PhantomJS('phantomjs')
#driver.set_window_size(1120, 550)

#---| From Excel
read = pandas.read_excel(open('book1.xlsx','rb'))
search_value = read.columns[1]

driver = webdriver.Firefox()
url = 'http://www.iata.org/publications/Pages/code-search.aspx'
driver.get(url)
field = driver.find_elements_by_id("ctl00_SPWebPartManager1_g_e3b09024_878e_4522_bd47_acfefd1000b0_ctl00_txtSearchCriteria")[0]
field.send_keys(search_value) #Use value from excel
time.sleep(3)
driver.find_elements_by_css_selector('#ctl00_SPWebPartManager1_g_e3b09024_878e_4522_bd47_acfefd1000b0_ctl00_butSearch')[0].click()
Endret av snippsat
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...