[英]Error parsing HTTP resposne while using “requests” python library
我正在尝试为这些页面上列出的IP地址解析HTML页面列表。 最初,我在parse_ip()
函数内调用requests()
参数的地方,代码运行良好。 随着功能的扩展,我决定将HTTP连接部分放入单独的connect()
函数中,然后在parse函数中调用它。 但是自从这样做以来,即使我正在搜索列表中的HTML页面之一中列出的IP地址,我的解析也不会返回任何结果。
这是我的代码段:
def connect():
for filename, source in threat.iteritems():
sessions = requests.Session()
print "Now connecting with", source
r = sessions.get(source,
headers = create_basic_headers(),
proxies = {'http': HTTP_PROXY, 'https': HTTPS_PROXY})
def parse(ip):
counter = 0
ioc_list = []
r = connect()
while r != None:
for line in r:
if line.startswith("/") or line.startswith('\n') or line.startswith("#"):
pass
else:
if ip in line:
ioc_list.append(ip)
print ioc_list
counter += 1
任何人都可以指出我要去哪里了。 def parse(ip)
,这里ip作为参数传递。
*****编辑****
根据评论,我将return添加到connect()函数。 循环现在能够解析HTML页面作为输入参数,但是我遇到了一个变量问题。 这是我修改的代码:
def connect():
for filename, source in threat.iteritems():
sessions = requests.Session()
print "Now connecting with", source
try:
r = sessions.get(source,
headers = create_basic_headers(),
proxies = {'http': HTTP_PROXY, 'https': HTTPS_PROXY})
return r
except:
sys.stdout.write('[!] Could not connect to: %s\n' % source)
def parse(ip):
counter = 0
ioc_list = []
r = connect()
while r != None:
for line in r:
if line.startswith("/") or line.startswith('\n') or line.startswith("#"):
pass
else:
if ip in line:
ioc_list.append(ip)
print ioc_list, source
counter += 1
这导致以下错误:
第55行,在parse_ip打印ioc_list中,源NameError:全局名称'source'未定义
有解决这个问题的想法吗?
您已在您发布的代码的第二行(从底部开始)的行中向print语句添加了另一个参数:
print ioc_list, source
该行上在名为source
作用域中没有变量,因此这就是您得到的错误。 您也很可能不想通过该循环在每次迭代中都打印出列表的内容-您的意思是改为使用
print ip
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.