Найти - Пользователи
Полная версия: Тип None
Начало » Python для новичков » Тип None
1
ELVYY
Есть код в котором вылетает ошибка типа: “Переменная p содержит тип None”. Я пытаюсь найти список ul - None, убираю class_ чтобы нашло любой список ul все равно None и так все что угодно, всегда None. Но если подставить div, то находит первую попавшуюся строку. Вообще не понимаю в чем дело. Я на разных сайтах пытался это сдеать и все равно такая же фигня.

 from bs4 import BeautifulSoup
import requests
URL = 'http://netology.ru/development/programs'
def get_html(url):
	request = requests.get(url)
	return request.text
def scrap(html):
	soup = BeautifulSoup(html, 'lxml')
	p = soup.find("ul", class_ = "program_tab-module__tab___2nonE") # 
	print(p) # Выводится просто None
def main():
	scrap(get_html(URL))
if __name__ == '__main__':
	main()
FishHook
ELVYY
Наберите HTML код своими руками просто тупо строкой или локальным файлом. Скормите этот HTML BeautifulSoup-пу и посмотрите что получается.

ПС.
А вы как дальше вообще работать собираетесь? Дорогой друг, такая наша профессия - каждый день, постоянно и непременно сталкиваться с какими-то непонятными факапами. Давайте уже как-то самостоятельно отлаживать свои программы. Есть развитые средства отладки, дебаггеры, вотчеры, встроенная в питон интроспекция, тупо принты можно рассовать по коду. Тестовые данные для отладки программы нужно создать, как правило, написать юнит тесты для всех компонентов. Вы хотите, чтобы за вас это кто-то другой делал? Ничего подобного, никто не пишет безгрешных программ сразу и без ошибок, отладка у всех и каждого занимает очень много времени. Занимайтесь этим сами.
Ну и наконец, вы хотя бы с помощью dir посмотрели что есть у объекта soup?
Прочитали ли вы справку по методу find? Вот откуда у вас уверенность, что find ищет в дереве потомков, а не в непосредственных потомках? Откуда вы откопали параметр class_ (я не нашел его в документации)?
Да ни черта вы не сделали.
ELVYY
FishHook
Я уже неделю с этой проблемой сижу. На русских платформах вообще ничего про это не пишут. На зарубежных находил пару решений (вот одно из них):
 from selenium import webdriver
import time
from bs4 import BeautifulSoup
driver = webdriver.Chrome()
url= "http://netology.ru/development/programs"
driver.maximize_window()
driver.get(url)
time.sleep(5)
content = driver.page_source.encode('utf-8').strip()
soup = BeautifulSoup(content,"html.parser")
officials = soup.findAll("ul",{"class":"program_tab-module__link___39D0P"})
for entry in officials:
    print(str(entry))
driver.quit()
Но у меня оно ошибку выдает (кину скрин). Отладчиком пробовал - не помогло. Просто мне самому тяжело найти в чем проблема, т.к. я только начал изучать питон. HELP
wallet
https://chromedriver.storage.googleapis.com/index.html?path=2.27/
 from selenium import webdriver
import time
from bs4 import BeautifulSoup
driver = webdriver.Chrome(r'C:\Program Files\Google\Chrome\Application\chromedriver.exe')
url= "http://netology.ru/development/programs"
driver.maximize_window()
driver.get(url)
time.sleep(5)
content = driver.page_source
soup = BeautifulSoup(content, "lxml")
officials = soup.find("ul", class_ ="program_tab-module__tab___2nonE")
for entry in officials:
    print(entry.text)
driver.quit()

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