фон:
Я изучаю веб-скребинг и решил использовать Python и
красивый суп наскрести, эта программа попросит у пользователя ссылку
и сузит свой поиск в HTML на веб-странице.
Проблема:
Когда я прошу пользователя определить свое собственное расширение для суповой страницы (EX .div.div.a), и я добавляю это ко всей строке и пытаюсь выполнить ее в функции печати, она всегда возвращает None. Как мне запустить расширение и распечатать его из собранного пользовательского ввода?
для этого примера я собираю поиск графических карт в Newegg.
пример ссылки: https://www.newegg.com/Video-Cards-Video-Devices/Category/ID-38?Tpk=graphics%20cards
Имейте в виду, из кода ниже, я уже использовал findAll для div class = "item-info", поэтому он будет искать расширение в этом блоке кода.
Я уже пробовал exec () строку, но, похоже, это не работает
isdone = ""
while isdone != "done":
try:
route = "container"
userinput = input("what extensions would you like to search for?\n seperate each denotion with a space \n ex: div div img[\"title\"]\n: ")
inputRoute = userinput.split(' ')
for i in range(len(inputRoute)):
route += "." + inputRoute[i]
print("---\n"+route+"\n---")
print("Current Route ^\n---")
print("output:\n", exec(route),"\n---")#actual resaults if user had inputed a
print(container.a) # what i actually want to output (if the user only inputed a)
#add the abilitie to add extensions ex: container.div.a.img["foo"] -ignore this stackoverflow
isdone = input("are you happy with these extensions? \n type 'done' when happy\n or enter to change extension\n: ")
except Exception as e:
print(e)
input("Make sure their is no leftover spaces\npress enter to continue")
'#' - мои комментарии во время вывода
ЭТО КОНСОЛЬНЫЙ ВЫХОД:
'what extensions would you like to search for?
seperate each denotion with a space
ex: div div img["title"]
: a # <--what I put in the input
---
container.a #what
---
Current Route ^
---
output:
None # <-- what actually outputs when i use exec()
---
<a class="item-brand" href="https://www.newegg.com/EVGA/BrandStore/ID-1402">
<img alt="EVGA" class="lazy-img" data-effect="fadeIn" data-src="//c1.neweggimages.com/Brandimage_70x28//Brand1402.gif" src="//c1.neweggimages.com/WebResource/Themes/2005/Nest/blank.gif" title="EVGA">
</img></a>
are you happy with these extensions?
type 'done' when happy
or enter to change extension
:'