Найти - Пользователи
Полная версия: Переменная как имя свойства
Начало » Python для новичков » Переменная как имя свойства
1
vipTelnet
Всем привет.

Нашел готовый пример кода в инете и решил его не много модифицировать в функцию getTag(url, tag)
добавил 2 параметр tag
и теперь вот тут
bsObj.body.tag
получаю ошибку так как tag это у меня переменная.
Подскажите как нужно в python правильно использовать в качестве имени свойства переменную.

 from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
import sys
def getTag(url, tag):
    try:
        html = urlopen(url)
    except HTTPError as e:
        print(e)
        return None
    try:
        bsObj = BeautifulSoup(html, "html.parser")
        inner = bsObj.body.tag
    except AttributeError as e:
        return None
    return inner
title = getTag("http://www.pythonscraping.com/exercises/exercise1.html", "h1")
if title == None:
    print("Title could not be found")
else:
    print(title)
div = getTag("http://www.pythonscraping.com/exercises/exercise1.html", "div")
if div == None:
    print("div could not be found")
else:
    print(div)  
FishHook
Я правильно понимаю

def getTag(url, tag):
….
……inner = bsObj.body.tag

вы вот таким образом собрались использовать аргумент функции?

vipTelnet
правильно использовать в качестве имени свойства переменную.
setattr, getattr
vipTelnet
Я правильно понимаю

def getTag(url, tag):
….
……inner = bsObj.body.tag

вы вот таким образом собрались использовать аргумент функции?
Да именно таким образом.

setattr, getattr
Почитал про эти метода для работы с объектами но так и не понял как их правильно использовать для решения моей задачи.

В php это можно был сделать примерно так
$bsObj->body->{$tag}
В javascript как то так
 bsObj.body['tag']
а как это на Python?
FishHook
vipTelnet
а как это на Python?
А вы перед тем как писать на php какую-то литературу читали по языку? А по JS?
Может стОит и по питону что-то почитать?

Что в принципе может быть непонятного в функции с сигнатурой
setattr(object, name, value)
??
vipTelnet
Не понятно что нужно указывать в качестве name, так как если писать
bsObj.body.h1
то будут возвращено содержимое тега h1
если писать bsObj.body.div
то будут возвращено содержимое тега div

Т.е какое там должно быть name
setattr(bsObj.body, name, tag)
FishHook
vipTelnet
толи я тупой, толи ваша мысль настолько глубока, что выходит за грани обыденного

 def getTag(url, tag):
        inner = getattr(bsObj.body, tag)

это вам надо?
vipTelnet
Да спасибо то что нужно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB