Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Wangarad kdy 17. 10. 2020, 10:08:08

Název: Python vyhladavanie na google s kliknutim
Přispěvatel: Wangarad kdy 17. 10. 2020, 10:08:08
Zdravim.
Tak mam pred sebou dalsi "projekt". Rozmyslam resp. rad by som dostal rady a tipy ako spravit vyhladavanie na google skrz python. Je mi jasne ako zadat request ale nenapada ma ako automaticky otvorit link ktory chcem s vysledku. Riesil to niekto? P.S. nejde o ziadne blackseo je to cisto len zvedavost.
Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: Wrána diskuze kdy 17. 10. 2020, 13:55:14
nóó a chceš to dělat jakoby z ničeho na zelený louce nebo by ti stačilo hotový řešení jako třeba pythoní balíček 'google' hele (https://www.geeksforgeeks.org/performing-google-search-using-python-code/) tutorial?? :o :o
Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: Wangarad kdy 18. 10. 2020, 11:58:59
Dakujem.
Kusok som pokrocil ale potreboval by som este trosicku posunut
Ak vyhladavam elelement na stranke pomocov selenia ako vyhladavat len element ktory obsahuje string resp. ako to filtovat
Toto pouzivam
elems = driver.find_elements_by_xpath("//a[@href]")
for elem in elems:
    print(elem.get_attribute("href"))

ale potrebujem hladat a href ="xxx.com/*" * reprezentuje random link. Chcem docielit to aby nasiel vsetky linky obsahujuce xxx.com
Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: IDontCare kdy 18. 10. 2020, 14:47:07
Najdi si cheatsheet k XPath..
//a[contains(@href, 'xxx.com/')]

nebo 'starts-with'..
Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: Wrána diskuze kdy 18. 10. 2020, 15:53:56
Citace od: IDontCare kdy 18. 10. 2020, 14:47:07
Najdi si cheatsheet k XPath.............
tenhleten cheatsheet se mi líbí a mam ho strčenej v záloškách hele (https://devhints.io/xpath) :) ;)
btw maj tam víc různejch cheatsheetů na tý stránce hele (https://devhints.io/) :o ;)
Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: Wangarad kdy 18. 10. 2020, 18:27:36
Wrána diskuze : dost dobre.
Uz to mam skoro hotove ale ostal mi posledny problem a sice vzdy ked zapnem script tak otvara nove okno v chrome. So far so good. Problem je ze ked vyhladavam na google chce odomna potvrdit podmienky.
skusam to skrz
buttons = driver.find_elements_by_xpath('//*[@id="introAgreeButton"]').click()
alebo
buttons = driver.find_element_by_id('introAgreeButton').click()
ale nechce ich potvrdit. Ako to "ofajcit"?
Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: Marek Turnovec kdy 19. 10. 2020, 17:20:07
Sellenium se většinou používá na testování webů. Pokud člověk má dostatek výkonu, tak to otevírání prohlížeče (v podstatě) asi vadit nemusí, ale kdyby mi šlo jen o vyhledávání na Googlu, tak je to jak jít s kanónem na vrabce. Já bych si vystačil buď s knihovnami jako requests, lxml, eventuálně Beautiful Soup, nebo bych se ještě podíval, jestli Google nemá i nějaké API a jestli na takové API nebude přímo existovat pro Python už nějaká hotová knihovna. Proč objevovat kolo, že...

Řešení je spousta, viz třeba tady:

https://towardsdatascience.com/current-google-search-packages-using-python-3-7-a-simple-tutorial-3606e459e0d4
Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: Wrána diskuze kdy 20. 10. 2020, 13:35:15
Citace od: Wangarad kdy 18. 10. 2020, 18:27:36
Wrána diskuze : dost dobre.
Uz to mam skoro hotove ale ostal mi posledny problem a sice vzdy ked zapnem script tak otvara nove okno v chrome. So far so good. Problem je ze ked vyhladavam na google chce odomna potvrdit podmienky.
skusam to skrz
buttons = driver.find_elements_by_xpath('//*[@id="introAgreeButton"]').click()
alebo
buttons = driver.find_element_by_id('introAgreeButton').click()
ale nechce ich potvrdit. Ako to "ofajcit"?
nóóóó voni to maj jakoby strčený v iframu takže se do něj musíme přepnout nejdřiv :o ;)
joa tu metodu click tam máš napsanu uplně divně protože 'buttons' sou list  :o :o čti coti to jakoby piše do terminálu za chyby vždycky  ;D ;)
Traceback (most recent call last):
  File "delani_s_chromiem.py", line 5, in <module>
    buttons = driver.find_elements_by_xpath('//*[@id="introAgreeButton"]').click()
AttributeError: 'list' object has no attribute 'click'

takže takle nějak byto mohlo fungovat
Kód (python) [Vybrat]

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://www.google.com')
driver.switch_to.frame(driver.find_element_by_tag_name('iframe'))
buttons = driver.find_elements_by_xpath('//*[@id="introAgreeButton"]')
print(buttons) # koukej žeto je list :O ;D
buttons[0].click()
print('hotovo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')

Název: Re:Python vyhladavanie na google s kliknutim
Přispěvatel: Wangarad kdy 20. 10. 2020, 21:44:37
Wrána diskuze : vobec ma nenapadlo ze je to iframe :( :) Kazdopadne dakujem funguje to ako ma.