gpt4 book ai didi

python - 名称错误 : name 'url_data' is not defined

转载 作者:行者123 更新时间:2023-12-01 07:56:18 25 4
gpt4 key购买 nike

我试图使用下面的代码在给定的 URL(工作中的内部网站)中搜索关键字,但我不断收到错误消息。它在公共(public)网站上运行良好。

from html.parser import HTMLParser
import urllib.request

class CustomHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.tag_flag = False
self.tag_line_num = 0
self.tag_string = 'temporary_tag'

def initiate_vars(self, tag_string):
self.tag_string = tag_string

def handle_starttag(self, tag, attrs):
#if tag == 'tag_to_search_for':
if tag == self.tag_string:
self.tag_flag = True
self.tag_line_num = self.getpos()


if __name__== '__main__':
#simple_str = 'string_to_search_for'
simple_str = 'Host Status'

my_url = 'TEST_URL'

parser_obj = CustomHTMLParser()

#parser_obj.initiate_vars('tag_to_search_for')
parser_obj.initiate_vars('script')

#html_file = open('location_of_html_file//file.html')
my_request = urllib.request.Request(my_url)

try:
url_data = urllib.request.urlopen(my_request)
except:
print("There was some error opening the URL")

html_str = url_data.read().decode('utf8')
#html_str = html_file.read()

#print (html_str)

html_search_result = html_str.lower().find(simple_str.lower())
if html_search_result != -1:
print ('The word {} was found'.format(simple_str))
else:
print ('The word {} was not found'.format(simple_str))

parser_obj.feed(html_str)

if parser_obj.tag_flag:
print ('Tag {0} was found at position {1}'.format(parser_obj.tag_string, parser_obj.tag_line_num))
else:
print ('Tag {} was not found'.format(parser_obj.tag_string))

但我不断收到错误

There was some error opening the URL
Traceback (most recent call last):
File "C:\TEMP\parse.py", line 40, in <module>
html_str = url_data.read().decode('utf8')
NameError: name 'url_data' is not defined

我相信我已经尝试使用 urllib2,使用 python v3.7

不知道该怎么办。值得尝试 user_agent 吗?

EDIT1:我现在已经尝试了以下操作

>>> import urllib
>>> url = urllib.request.urlopen('https://concernedURL.com')

并且我收到此错误“urllib.error.HTTPError:HTTP 错误 401:未经授权”。我应该使用浏览器中的 header 以及 SSL 证书吗?

最佳答案

问题是您在 try block 中遇到错误,并且导致 url_data 变量未定义:

try:
# if this errors, no url_data will exist
url_data = urllib.request.urlopen(my_request)
except:
# really bad to catch all exceptions!
print("There was some error opening the URL")

html_str = url_data.read().decode('utf8')

您可能应该删除try- except,或者更好地处理错误。几乎不建议在没有特定错误的情况下使用裸露的 except,因为它可能会产生各种问题。

在这种情况下,如果您无法打开请求的网址,您的程序可能应该停止运行,因为如果打开一开始就失败,尝试对网址的数据进行操作实际上没有任何意义。

关于python - 名称错误 : name 'url_data' is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55964272/

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