单独文件AttributeError中的Python类
所以,我正在制作一个易受攻击的站点检查器,我正在使用类来完成这项工作。我有一个用于修复代理的类和一个用于检查的类。现在,我已经完成了代理类的工作,并从检查文件开始,但我得到了一个错误 proxy.py 注射剂 我试着自己打印模块,结果成功了。我只是不明白为什么会有错误。我从proxy.py中删掉了一些代码,因为否则代码会很长。如果您需要所有代码,请告诉我。顺便说一下,我删掉的代码不是必需的,它只是一些带有其他函数的代码 错误:单独文件AttributeError中的Python类,python,class,Python,Class,所以,我正在制作一个易受攻击的站点检查器,我正在使用类来完成这项工作。我有一个用于修复代理的类和一个用于检查的类。现在,我已经完成了代理类的工作,并从检查文件开始,但我得到了一个错误 proxy.py 注射剂 我试着自己打印模块,结果成功了。我只是不明白为什么会有错误。我从proxy.py中删掉了一些代码,因为否则代码会很长。如果您需要所有代码,请告诉我。顺便说一下,我删掉的代码不是必需的,它只是一些带有其他函数的代码 错误: Traceback(最近一次调用last):文件“injection
Traceback(最近一次调用last):文件“injection.py”,第2行,在abc=proxy.getrandproxy()中
AttributeError:模块“proxy”没有属性“getrandproxy”
您有一个名为
proxy
的模块,该模块中有一个名为proxy
的类。如果您修复了第一个文件的缩进,您可能会更轻松。否则会出现语法错误,看起来您实际上并不打算编写一个类。只需删除class proxy:
行和所有出现的self
。如果这个类确实有理由成为一个类(也就是说,它的方法对该self
参数有一些用处),那么在不创建实例的情况下就不能使用它:myproxy=proxy.proxy()
。然后您可以调用该实例上的方法,比如myproxy.getrandproxy()
。也就是说,很难理解该类应该表示什么。它被称为proxy
,但它所做的唯一事情是保存一个从未使用过的头和一个获取随机代理的方法。除了该方法甚至不返回随机代理之外,它还返回一个代理服务器列表。因此,所有的名称都是误导性的,这使得我们很难理解预期的设计是什么,也使得我们更难告诉您如何修复它以匹配该设计。@abarnert,您给我的解决方案是有效的,thnx就是这样。很抱歉,我的代码很混乱,但正如我所说,这不是我在课堂上的唯一功能,我对使用课堂很陌生,所以我正在尝试练习。我现在正在更新我的代码,很抱歉有任何混淆。或者从代理导入代理它给了我这个错误回溯(最近一次调用):文件“injection.py”,第3行,在abc=proxy.getrandproxy()类型错误:getrandproxy()缺少1个必需的位置参数:“self”
这仍然没有任何意义,但仍然不起作用,因为proxy.proxy
是一个类,而getrandproxy
是一个实例方法。
class proxy:
def __init__(self):
self.hdr = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'}
def getrandproxy(self):
proxies = []
r = requests.get("https://free-proxy-list.net/anonymous-proxy.html", headers=self.hdr)
soup = BS(r.text, "lxml")
container = soup.find("body").section.div.find('div', ['table-responsive']).table.tbody #path from body to proxy table, since parsing directly to it doesn't work
for tr in container.find_all("tr"):
ip = tr.td.text
port = tr.td.next_sibling.text
anonimity = tr.td.next_sibling.next_sibling.next_sibling.next_sibling.text
https = tr.td.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling.text
if https == "yes" and anonimity == "anonymous" or anonimity == "elite proxy":
server = ip + ":" + port
proxies.append(server)
return proxies
import requests, proxy
abc = proxy.getrandproxy()
print(abc)
Traceback (most recent call last): File "injection.py", line 2, in <module> abc = proxy.getrandproxy()
AttributeError: module 'proxy' has no attribute 'getrandproxy'
import requests, proxy
abc = proxy.proxy().getrandproxy()
print(abc)