I am able to grab data if i apply static value of each dropdown but now i am trying to fetch dynamic values loop through each value of dropdown and store result to mysqldb.
Issue : I am unable to loop each elements of drop-down and store result to database, if i pass static value for each three dropdown then i am able to do.
Working Code for Static values
import time
from selenium import webdriver
import requests
from bs4 import BeautifulSoup
import MySQLdb
url = "http://xlnindia.gov.in/frm_G_Cold_S_Query.aspx"
browser = webdriver.Chrome()
browser.get(url)
#=========State====================
state = browser.find_element_by_id("ddlState")
state.send_keys("GJ")
#=========District====================
district = browser.find_element_by_id("ddldistrict")
district.send_keys("AD2")
#=========Taluka====================
category = browser.find_element_by_id("ddltaluka")
category.send_keys("AMB")
button = browser.find_element_by_id("btnSearch")
button.click()
# Open database connection
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="", # your password
db="test") # name of the data base
cursor=db.cursor()
time.sleep(10)
browser.save_screenshot(browser.title + ".JPEG")
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
table = soup.findChildren('table')[3]
for row in table.findAll("tr")[1:]:
cells = row.findAll("td")
name = cells[0].find(text=True)
city = cells[1].find(text=True)
licence = cells[2].find(text=True)
owner = cells[3].find(text=True)
cursor.execute ("INSERT INTO distributors (name, city, licence, owner) VALUES (%s, %s, %s, %s);", (name, city, licence, owner))
#print(table.prettify())
#print(html)
db.commit()
db.close()
browser.close()
browser.quit()
Trying to pass dynamic values by looping each elements of dropdown
import time
from selenium import webdriver
import requests
from bs4 import BeautifulSoup
import MySQLdb
url = "http://xlnindia.gov.in/frm_G_Cold_S_Query.aspx"
browser = webdriver.Chrome()
browser.get(url)
#=======================================================
#Array of Stats Dropdown
states_array = []
el = browser.find_element_by_id('ddlState')
for option in el.find_elements_by_tag_name('option'):
states_array.append(option.get_attribute("value"))
#print(states_array)
#=======================================================
#=======================================================
#Array of Districts Dropdown
district_array = []
el = browser.find_element_by_id('ddldistrict')
for option in el.find_elements_by_tag_name('option')[1:]:
district_array.append(option.get_attribute("value"))
#print(district_array)
#=======================================================
state = browser.find_element_by_id("ddlState")
district = browser.find_element_by_id("ddldistrict")
category = browser.find_element_by_id("ddltaluka")
# Open database connection
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="", # your password
db="test") # name of the data base
cursor=db.cursor()
taluka_array = []
for i in range(len(states_array)):
state.send_keys(states_array[i])
for j in range(len(district_array)):
district.send_keys(district_array[j])
district.click()
el = browser.find_element_by_id('ddltaluka')
for option in el.find_elements_by_tag_name('option')[1:]:
taluka_array.append(option.get_attribute("value"))
print(taluka_array)
for k in range(len(taluka_array)):
category.send_keys(taluka_array[k])
button = browser.find_element_by_id("btnSearch")
button.click()
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
table = soup.findChildren('table')[3]
for row in table.findAll("tr")[1:]:
cells = row.findAll("td")
name = cells[0].find(text=True)
city = cells[1].find(text=True)
licence = cells[2].find(text=True)
owner = cells[3].find(text=True)
cursor.execute ("INSERT INTO distributors (name, city, licence, owner) VALUES (%s, %s, %s, %s);", (name, city, licence, owner))
db.commit()
db.close()
