【发布时间】:2019-05-11 16:10:43
【问题描述】:
我是 python 新手。我希望这段代码在 tkinter 中运行。在我将 tkinter 添加到代码之前,它可以工作,但现在我得到一个错误:'NoneType' 对象没有属性'attrs'。我没有更改那部分代码。
我尝试了 try-except 和 if meta is not None:,当我尝试 if meta is not None:
return parse_data(meta.attrs['content'])
code 运行但 tkinter 显示一个空标签。
entry0 = tk.Entry(frame)
entry0.grid(row = 0, column = 1)
URL = "https://www.instagram.com/{}/"
def parse_data(s):
data ={}
s = s.split("-")[0]
s = s.split()
data['Followers'] = s[0]
data['Following'] = s[2]
data['posts'] = s[4]
return data
def scrape_data(username):
r = requests.get(URL.format(username))
s = BeautifulSoup(r.text,"html.parser")
meta = s.find("meta",property="og:description")
return parse_data(meta.attrs['content'])
if __name__ =="__main__":
username = entry0.get()
data = scrape_data(username)
def func():
label2 = tk.Label(frame, text = data)
label2.grid(row = 1, column = 1)
我希望代码能够正常运行,但出现错误:“NoneType”对象没有属性“attrs”。
我希望 tkinter 在label2 中显示data 但是
【问题讨论】:
-
大概这是因为
meta = s.find("meta",property="og:description")返回None。它可能找不到您要查找的内容。我不认为tkinter与这样的错误有任何关系。 -
显然
meta是None,所以s.find("meta",property="og:description")失败了。if meta is not None:测试应该可以工作,但你没有展示你是如何应用它的。 -
@cdarke 对不起,我是 stackoverflow 的新手。我试过这样:
if meta is not None: return parse_data(meta.attrs['content'])代码运行但 tkinter 只是显示一个空白标签。 -
这就是你所期望的,因为如果你没有明确的
return,你会从函数中返回None。你期望 tkinter 展示什么?您应该确定s.find()失败的原因并进行处理。 -
@cdarke 我希望 tkinter 在标签中显示
data,因为没有 tkinter 的代码与print(data)一起使用,我使用input而不是entry.get()
标签: python web-scraping beautifulsoup