2016-02-06 192 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实例作为第一个参数,并将一个url作为第二个参数。当你包含括号时,你正在创建一个webdriver.Firefox的实例,Python自动将它作为第一个参数。

0

主要问题是“url”变量名称与for循环中的“url”相同。 尝试重命名该变量。

这里是修改后的代码。 我已经使用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)