【问题标题】:AttributeError: 'function' object has no attribute 'replace' with Tkinter and BeautifulSoup [closed]AttributeError:'function'对象没有属性'replace'与Tkinter和BeautifulSoup [关闭]
【发布时间】:2022-01-07 12:02:39
【问题描述】:
import tkinter as tk
from tkinter import ttk
import bs4 as bs
from bs4 import BeautifulSoup, SoupStrainer
import httplib2

soup = BeautifulSoup('html.parser', features="lxml")

#Creation Objet Tkinter#

window = tk.Tk()

#DefinitionTailleObjet#

window.title("Python Tkinter Text Box")
window.minsize(300,200)
label = ttk.Label(window, text = "Entrez l'URL")
label.grid(column = 0, row = 0)

#DefinitionDeLaTailleObjet#

def Valide():

    http = httplib2.Http()
    status, response = http.request('nameEntered.get')

    for link in bs.BeautifulSoup(response, 'html.parser',parse_only=SoupStrainer('a')):
        if link.has_attr('href'):
            print(link['href'])


#Alogrithme Derriere le bouton#
name = tk.StringVar()
nameEntered = ttk.Entry(window, width = 50, textvariable = name)
nameEntered.pack
nameEntered.grid(column = 0, row = 1)
 
button = ttk.Button(window, text = "Validé", command = Valide)
button.grid(column= 0, row = 3)
 
window.mainloop()

这是我的代码;我正在尝试测试用户输入的站点,然后它会一一获取所有链接并一一测试它们是否有效,但我被卡住了,因为我认为 var 存在问题。请帮忙。

提前感谢您的回答。

【问题讨论】:

  • 发布完整的错误回溯。

标签: python tkinter beautifulsoup attributeerror httplib2


【解决方案1】:

问题出在一行

status, response = http.request('nameEntered.get')

您在此处将硬编码字符串传递给http.request()-函数。 实际上,我假设您想阅读文本字段的内容。 因此,需要调用nameEntered.get(),并将其返回值传递给名为Valide的函数中的函数http.request,像这样

status, response = http.request(nameEntered.get())

更具描述性(但等效)的是:

# Reads the content of the textfield
url = nameEntered.get()
# Queries the URL
status, response = http.request(url)

【讨论】:

  • 神圣!谢谢它有效,我确实忘记了(),解释很清楚!我的错误很明显,再次感谢你
猜你喜欢
  • 2014-06-19
  • 2014-09-02
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2021-05-29
  • 2019-08-02
相关资源
最近更新 更多