gpt4 book ai didi

python - 为什么我的代码中会出现 Control NotFoundError?

转载 作者:行者123 更新时间:2023-12-04 16:21:13 27 4
gpt4 key购买 nike

我现在很困惑,因为我通过添加“from mechanize import ControlNotFoundError”修复了一个错误。但是,它现在弹出此错误。任何帮助是极大的赞赏。我几天前才开始学习 python,所以我对这些错误不是很熟悉,而且我认为我还没有在这里找到类似的东西。

import mechanize
from mechanize import ControlNotFoundError
import sys
from random import randint
import time
import csv

ipa=randint(1, 254)
ipb=randint(1, 254)

ip="131.156." + str(ipa) + "." + str(ipb)

ofile="D:\Downloads\csvDataFile.csv"

url = "https://website.com/realsite"
br = mechanize.Browser()
br.set_handle_robots(False) # ignore robots

names=[]
i=0
entries=80
with open(ofile) as csvDataFile:
csvReader = csv.reader(csvDataFile)
for row in csvReader:
names.append((row[0],row[1]))
csvDataFile.close()

for name,email in names:

ipa=randint(1, 254)
ipb=randint(1, 254)
ip="131.156." + str(ipa) + "." + str(ipb)

br = mechanize.Browser()
br.set_handle_robots(False) # ignore robots
br.open(url)

br.select_form(nr = 0)
while True:
try:
br.form.find_control( 'Entries[registration_ip]').readonly = False
print "Form found ",
break
except mechanize.ControlNotFoundError:
print "ControlNotFoundError"
br.open(url)
br.select_form(nr = 0)
br.form.find_control( 'Entries[registration_ip]').readonly = False
br.form.set_value(ip, 'Entries[registration_ip]')
br.form.set_value(name, 'Entries[full_name]')
br.form.set_value(email, 'Entries[email]')

time.sleep(randint(1, 110))
time.sleep(random())

res = br.submit()
print name + " " + email

content = res.read()
if (i > entries) : break
i+=1

time.sleep(randint(1, 200))
time.sleep(random())

with open("mechanize_results.html", "w") as f:
f.write(content)

错误:
ControlNotFoundError                      
Traceback (most recent call last)
<ipython-input-6-549eea94ea1f> in <module>()
46 br.open(url)
47 br.select_form(nr = 0)
---> 48 br.form.find_control(
'Entries[registration_ip]').readonly = False
49 br.form.set_value(ip, 'Entries[registration_ip]')
50 br.form.set_value(name, 'Entries[full_name]')

C:\Users\Donald\Anaconda2\lib\site-packages\mechanize\_form_controls.pyc in
find_control(self, name, type, kind, id, predicate, nr, label)
2329 raise ValueError(
2330 "at least one argument must be supplied to specify
control")
-> 2331 return self._find_control(name, type, kind, id, label,
predicate, nr)
2332
2333 # ---------------------------------------------------

C:\Users\Donald\Anaconda2\lib\site-packages\mechanize\_form_controls.pyc in
_find_control(self, name, type, kind, id, label, predicate, nr)
2422 description)
2423 elif not found:
-> 2424 raise ControlNotFoundError("no control matching " +
description)
2425 assert False
2426

ControlNotFoundError: no control matching name 'Entries[registration_ip]'

最佳答案

try:
br.form.find_control( 'Entries[registration_ip]').readonly = False
print "Form found ",
break
except mechanize.ControlNotFoundError:
print "ControlNotFoundError"
br.open(url)
br.select_form(nr = 0)
br.form.find_control( 'Entries[registration_ip]').readonly = False

br.form.find_control()抛出一个 ControlNotFoundError第一次调用时出现异常,为什么您期望在 except 中再次调用它时它会神奇地工作堵塞?

关于python - 为什么我的代码中会出现 Control NotFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com