我正在处理一个脚本,该脚本检查用户名是否在使用Xenforo的大量论坛上被使用。该列表实际上是2个单独的列表,每个Xenforo版本一个(由于每个版本需要略有不同的代码)。
我正在尝试使用具有3种方法的类,而不包括 init 。原谅我,因为这是我第一次使用类。
class Xenforo:
def __init__(self, name):
self.name = name
def iterurl(self, inputfile):
with open(inputfile, "r") as f:
for item in f:
item2 = item.strip()
payload = {'login':self.name}
response = requests.post(item2, data=payload)
soup = BeautifulSoup(response.text, "html.parser")
return soup
def check1(self):
self.iterurl("version1.txt")
name_result = soup.find("div", class_="blockMessage blockMessage--error blockMessage--iconic").text.strip()
if name_result == "Incorrect password. Please try again.":
print("user found")
elif name_result == "The requested user '"+self.name+"' could not be found.":
print("user not found")
else:
print("possible error")
print(name_result)
def check2(self):
payload = {'login': self.name}
response = requests.post(self.url, data=payload)
soup = BeautifulSoup(response.text, "html.parser")
try:
name_result = soup.find("div", class_="errorPanel").find("li").text.strip()
if name_result == "User names must be unique. The specified user name is already in use.":
print("user found")
else:
print("user not found")
except AttributeError:
print("user not found")
基本上,我想在check1()和check2()中都使用iterurl(),因为除了文本文件的名称外,代码的前一半是相同的(请记住,我没有为check2重新编写代码) ())。
我不确定是否在check1()中正确调用了iterurl()。最重要的是如何将汤从带有check1()的iterurl()传递到check1内的其余代码?
此代码无法将iterurl中的汤识别为现有的
name_result = soup.find("div", class_="blockMessage blockMessage--error blockMessage--iconic").text.strip()
我怎样才能通过Python的check1汤?
答案 0 :(得分:1)
调用iterutil的结果是汤,所以
def check1(self):
soup = self.iterutil(“version1.txt”)
soup.foo()
....