Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Wangarad 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óó 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
-
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
-
Najdi si cheatsheet k XPath..
//a[contains(@href, 'xxx.com/')]
nebo 'starts-with'..
-
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 ;)
-
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"?
-
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
-
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
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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
-
Wrána diskuze : vobec ma nenapadlo ze je to iframe :( :) Kazdopadne dakujem funguje to ako ma.