Home > Blockchain >  Managing several user agents on each request using Selenium with Python
Managing several user agents on each request using Selenium with Python

Time:03-01

I use the following code to insert a code in a search bar, click a button and finally extract some information:

from selenium import webdriver
import time
from fake_useragent import UserAgent

url =  'https://www.ufficiocamerale.it/'

vat = '06655971007'

useragent = UserAgent()

profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", useragent.random)

driver = webdriver.Firefox(profile)
driver.get(url)

time.sleep(5)

item = driver.find_element_by_xpath('//form[@id="formRicercaAzienda"]//input[@id="search_input"]')
item.send_keys(vat)

time.sleep(1)

button = driver.find_element_by_xpath('//form[@id="formRicercaAzienda"]//p//button[@type="submit"]')
button.click()

time.sleep(5)

all_items = driver.find_elements_by_xpath('//ul[@id="first-group"]/li')
for item in all_items:
    if '@' in item.text:
        print(item.text.split(' ')[1])
        
driver.close()

Now I would like to modify the code to handle the above process several times thanks to a for loop, i.e. something like this:

from selenium import webdriver
import time
from fake_useragent import UserAgent

url =  'https://www.ufficiocamerale.it/'

vats = ['06655971007', '06655971007', '01010101010']

for vat in vats:
    useragent = UserAgent()
    # rest of the code

but it does nothing. Where am I doing wrong? Is it the definition of user agent?

CodePudding user response:

Can you be more specific about "it does nothing" please ?

Is code without loop is working fine ? *when testing it on this web site, for "06655971007" as input, it won't write anything because no @ in returned string

EDIT

from selenium import webdriver
import time
#from fake_useragent import UserAgent

url =  'https://www.ufficiocamerale.it/'

vats = ['06655971007', '06655971007', '01010101010']

for vat in vats:
    #useragent = UserAgent()

    profile = webdriver.FirefoxProfile()
    profile.set_preference("general.useragent.override", "useragent.random")

    driver = webdriver.Chrome('./chromedriver.exe')
    #driver = webdriver.Firefox(profile)
    driver.get(url)

    time.sleep(5)

    item = driver.find_element_by_xpath('//form[@id="formRicercaAzienda"]//input[@id="search_input"]')
    item.send_keys(vat)

    time.sleep(1)

    button = driver.find_element_by_xpath('//form[@id="formRicercaAzienda"]//p//button[@type="submit"]')
    button.click()

    time.sleep(5)

    all_items = driver.find_elements_by_xpath('//ul[@id="first-group"]/li')
    found_it = False
    for item in all_items:
        if '@' in item.text:
            print(vat   " = "   item.text.split(' ')[1])
            found_it = True
    if not found_it:
        print(vat   " no email found")

driver.close()

With output like this :

01010101010 no email found
08157270961 = [email protected]
06655971007 = [email protected]
  • Related