Форум сайта python.su
0
Всем привет.
Нашел готовый пример кода в инете и решил его не много модифицировать в функцию 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)
Офлайн
568
Я правильно понимаю
def getTag(url, tag):
….
……inner = bsObj.body.tag
вы вот таким образом собрались использовать аргумент функции?
vipTelnetsetattr, getattr
правильно использовать в качестве имени свойства переменную.
Офлайн
0
Я правильно понимаюДа именно таким образом.
def getTag(url, tag):
….
……inner = bsObj.body.tag
вы вот таким образом собрались использовать аргумент функции?
setattr, getattrПочитал про эти метода для работы с объектами но так и не понял как их правильно использовать для решения моей задачи.
$bsObj->body->{$tag}bsObj.body['tag']
Отредактировано vipTelnet (Авг. 21, 2019 11:56:35)
Офлайн
568
vipTelnetА вы перед тем как писать на php какую-то литературу читали по языку? А по JS?
а как это на Python?
setattr(object, name, value)
Офлайн
0
Не понятно что нужно указывать в качестве name, так как если писать
bsObj.body.h1
то будут возвращено содержимое тега h1
если писать bsObj.body.div
то будут возвращено содержимое тега div
Т.е какое там должно быть name
setattr(bsObj.body, name, tag)
Офлайн
568
vipTelnet
толи я тупой, толи ваша мысль настолько глубока, что выходит за грани обыденного
def getTag(url, tag): inner = getattr(bsObj.body, tag)
Офлайн
0
Да спасибо то что нужно.
Офлайн