2016-02-06 3 views
0

Я пытаюсь щелкнуть по одной ссылке из списка ссылок, подождать одну секунду (еще не добавлено), а затем нажать на следующую ссылку. Использование селена и bs4. Это мой код:Как нажимать на каждую ссылку из списка ссылок? - Python, Selenium

links = ['https://www.bing.com', 'https://www.google.com', 'https://www.yahoo.com'] 
for url in links: 
    url = "'"+url+"'" 
    print(url,'\n') 
    browser = webdriver.Firefox 
    browser.get(url) 

и это ошибка я получаю:

Traceback (most recent call last): 
    File "C:/Users/SK/PycharmProjects/untitled/linkedin_bot.py", line 38, in <module> 
    browser.get(url) 
TypeError: get() missing 1 required positional argument: 'url' 

Что именно я делаю неправильно и как ее решить? Спасибо

+0

Вы создаете новый экземпляр браузера для * каждого отдельного запроса *? Вот почему вы можете изменить это: http://stackoverflow.com/a/35116310/954442 –

ответ

1

Вам необходимо изменить browser = webdriver.Firefox на browser = webdriver.Firefox(). Как бы то ни было, когда вы вызываете browser.get(url), он ожидает в качестве первого аргумента аргумента webdriver.Firefox и второго аргумента. Когда вы включаете круглые скобки, вы создаете экземпляр webdriver.Firefox, и Python автоматически передает его в качестве первого аргумента.

0

Основная проблема заключается в том, что имя переменной «url» совпадает с именем «url» в цикле for. Попробуйте переименовать переменную.

Вот код с поправками. Я использовал Chrome как драйвер, но вы можете использовать Firefox или любой другой драйвер. Не забудьте изменить исполняемый путь драйвера в соответствии с вашей ситуацией.

from selenium import webdriver 

import time 

browser = webdriver.Chrome(executable_path='C:\Chrome\chromedriver.exe') 

links = ['https://www.bing.com', 'https://www.google.com', 'https://www.yahoo.com'] 
for url in links: 
    urls = "'"+url+"'" 
    print(urls,'\n') 
    browser.get(url) 
    time.sleep(1) 
Смежные вопросы