I am windows 7 user using python 3.6.7 and chromedriver 83.3 I love automating stuff with python and recently started web automation with selenium and chromedriver. So i am pretty new to this field.
I wrote a script that can download any software from the internet after, (spending hours on tutorials and documentation reading) upon giving it a search query. Here is my script:
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import requests, bs4
query = input("Name for a windows software: ")
searchGoogle = "https://www.google.com/search?q="+"download "+str(query)+" for windows 7"
driver = webdriver.Chrome('chromedriver.exe')
links = []
website = requests.get(searchGoogle)
website_text = website.text
soup = bs4.BeautifulSoup(website_text,"lxml")
all_links = []
for link in soup.find_all("a"):
links.append(link.get("href"))
for link in links:
if "/url?q=" in link:
final = link.replace("/url?q=","")
final = final.split("&", 1)[0]
all_links.append(final)
for ss in all_links:
try:
driver.get(ss)
time.sleep(30)
download = driver.find_element_by_partial_link_text('Download')
download.click()
print(download.text)
quit()
except:
#print(download.href)
print("Not Found... Moving to next...")
continue
the problem is that sometimes it clicks on some links that say "Download" and go to another page which asks "Start Download".
I know that when you download an exe file the link to download contains something like this: "https://something.com/something/something.exe"
So i wanted to ask if there was a find_element_if_its_href_contains('.exe') Or: anything that clicks only a link which contains ".exe" in it.
I am new to this community and I am sorry if you find anything in my question that does not meet StackOverflow Expectations. Ask me in the comments and i would be glad to change my question in the way that you suggest.
By The Way, Thanks in advance!