我正在构建一个Python脚本,并希望将某些函数拆分为单独的文件以使维护更容易。
我目前有两个文件称为 main.py 和 function1.py
main.pydef
#Setup Imports
import os
import os.path
import sys
# Import Functions
from function1 import myfunction
#Setup Selenium
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
#Launch Firefox
def init_driver():
driver = webdriver.Firefox()
return driver
url_list = ['http://www.example.com/page1', 'http://www.example.com/contact', 'http://www.example.com/about', 'http://www.example.com/test'];
driver = init_driver()
# Init Blank List
checked_urls = []
for url in url_list:
myfunction(driver)
print(checked_urls)
function1.py
def myfunction(driver):
driver.get(url)
htmlText = driver.find_element_by_css_selector("#phrase").text
if "This Is My Phrase" in htmlText:
checked_urls.extend(['PHRASE_FOUND'])
else:
checked_urls.extend(['PHRASE_FOUND'])
我正在尝试让它访问列表中的每个 URL 并检查页面上的"这是我的短语"。 如果找到它,那么它应该添加到列表中。
我在运行脚本时看到以下错误...
NameError: name 'url' is not defined
我很确定这与我导入单独功能的方式有关,但无法找出问题所在,有人可以帮忙吗?
你还必须将 url 变量传递给 myfunction:
def myfunction(driver, url):
driver.get(url)
htmlText = driver.find_element_by_css_selector("#phrase").text
if "This Is My Phrase" in htmlText:
checked_urls.extend(['PHRASE_FOUND'])
else:
checked_urls.extend(['PHRASE_FOUND'])
然后在主文件中:
for url in url_list:
myfunction(driver, url)
我认为应该更正一些代码:
首先,删除url_list
之前的空格:
#url_list = ['http://www.example.com/page1', 'http://www.example.com/contact', 'http://www.example.com/about', 'http://www.example.com/test'];
url_list = ['http://www.example.com/page1', 'http://www.example.com/contact', 'http://www.example.com/about', 'http://www.example.com/test'];
然后,url
是一个局部变量,它不能在函数myfunction
中直接访问。但它可以作为函数参数访问:
def myfunction(driver, url):
...