Python 我总是在赋值前引用局部变量时出错!我如何解决这个问题?
谢谢你抽出时间来帮我。我正在用django编写一个web抓取api,但在过去的5天里一直出现一个可怕的错误!奇怪的是,在macOS上绝对没有错误,当我部署到AWS时,它会向我抛出变量引用错误!ubuntu有Python3.6.8,macOS有Python3.6.6 我已经尝试过不同的方法,但现在我想不出任何方法!在macOS上,应该返回的刮取数据返回良好,但在ubuntu上,我被压碎了!请帮忙Python 我总是在赋值前引用局部变量时出错!我如何解决这个问题?,python,django,python-3.x,variables,error-handling,Python,Django,Python 3.x,Variables,Error Handling,谢谢你抽出时间来帮我。我正在用django编写一个web抓取api,但在过去的5天里一直出现一个可怕的错误!奇怪的是,在macOS上绝对没有错误,当我部署到AWS时,它会向我抛出变量引用错误!ubuntu有Python3.6.8,macOS有Python3.6.6 我已经尝试过不同的方法,但现在我想不出任何方法!在macOS上,应该返回的刮取数据返回良好,但在ubuntu上,我被压碎了!请帮忙 data_list = [] div_class = scrape_driver_2.find(cla
data_list = []
div_class = scrape_driver_2.find(class_ = 'c1_t2i')
daraz_products = scrape_driver.find_all(class_ = 'c2prKC')
for data_fragment in daraz_products: # iterate and find all classes
data_block = data_fragment.text.strip() # Convert code to text
formatted_block = data_block.replace('ADD TO CART', '')
second_iterated_block = formatted_block.replace('%', '')
third_iterated_block = second_iterated_block.replace(')Pakistan', ')-Pakistan')
fourth_iterated_block = third_iterated_block.replace('Pakistan', '-Pakistan')
data_list.append(fourth_iterated_block)
high_data = [{"Timestamp": time_stamp,
"TS Token": ts_token,
"Status": sitrep},
data_list]
return Response({"data": high_data})
engine_initializer.close()
我得到的错误是:
在/api/big-budget筛选器处取消绑定LocalError/
分配前引用的局部变量“high_data”将high_data保留在循环之外,并在所有迭代后设置它,然后返回
data_list=[]
div_class=scrape_driver_2.find(class_u='c1_t2i')
daraz_products=scrape_driver.find_all(类_u='c2prKC')
对于daraz_产品中的数据_片段:#迭代并查找所有类
data_block=data_fragment.text.strip()#将代码转换为文本
格式化的块=数据块。替换('添加到购物车','')
第二个迭代块=格式化块。替换('%,'')
第三个迭代块=第二个迭代块。替换(“)巴基斯坦”,“巴基斯坦”)
第四个迭代块=第三个迭代块。替换('Pakistan','-Pakistan')
数据列表.append(第四个迭代块)
高_数据=[{“时间戳”:时间戳,
“TS令牌”:TS_令牌,
“状态”:sitrep},
数据表]
返回响应({“数据”:高_数据})
编辑:根据这篇文章的评论,一个带有虚拟数据的简化示例版本
data_list=[]
daraz_产品=[“产品1”、“产品2”、“产品3”]
对于daraz_产品中的数据_片段:
数据列表。追加(数据片段)
打印数据列表
数据列表将包含daraz_products的所有产品这意味着
daraz_products
为空,因此从不设置高数据
。可能是daraz_products
为空。请始终在您的问题中粘贴完整的错误回溯,这样我们就不必猜测错误发生在哪里。这个完全相同的代码片段会刮除macOS上的所有产品,先生,在ubuntu上。这个错误正在刺穿我的h311@Ali_Rashid:那么你刮的网页可能无法访问,或者为不同的代理呈现不同的内容。UnboundLocalError位于/api/big budget filter/分配前引用的局部变量“high_data”Django版本:2.2.5异常类型:UnboundLocalError异常值:分配前引用的局部变量“high_data”异常位置:/home/ubuntu/Exodis Django/Exodis Django先生,我可以再试一次,但有趣的是我的代码在macOS上运行时没有错误,但在AWS ubuntu上它会抛出错误!它将不返回任何内容,只返回空的数据列表
它必须向数据列表追加已刮取的数据,然后将追加的数据列表传递给high\u数据并返回high\u数据。如果没有意义,则将数据追加到循环内的列表中。一旦添加,在最后一次迭代后它就不会是空的。我知道这很奇怪,我现在正在发你建议的方法,我希望它能工作,但是为什么我在AWS ubuntu上出错的代码不能工作,但是在macOS上它能工作呢?