Форум сайта python.su
Есть код в котором вылетает ошибка типа: “Переменная 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()
Отредактировано ELVYY (Март 3, 2017 17:40:14)
Офлайн
ELVYY
Наберите HTML код своими руками просто тупо строкой или локальным файлом. Скормите этот HTML BeautifulSoup-пу и посмотрите что получается.
ПС.
А вы как дальше вообще работать собираетесь? Дорогой друг, такая наша профессия - каждый день, постоянно и непременно сталкиваться с какими-то непонятными факапами. Давайте уже как-то самостоятельно отлаживать свои программы. Есть развитые средства отладки, дебаггеры, вотчеры, встроенная в питон интроспекция, тупо принты можно рассовать по коду. Тестовые данные для отладки программы нужно создать, как правило, написать юнит тесты для всех компонентов. Вы хотите, чтобы за вас это кто-то другой делал? Ничего подобного, никто не пишет безгрешных программ сразу и без ошибок, отладка у всех и каждого занимает очень много времени. Занимайтесь этим сами.
Ну и наконец, вы хотя бы с помощью dir посмотрели что есть у объекта soup?
Прочитали ли вы справку по методу find? Вот откуда у вас уверенность, что find ищет в дереве потомков, а не в непосредственных потомках? Откуда вы откопали параметр class_ (я не нашел его в документации)?
Да ни черта вы не сделали.
Отредактировано FishHook (Март 3, 2017 18:11:27)
Офлайн
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()
Отредактировано ELVYY (Март 3, 2017 20:28:54)
Прикреплённый файлы: Снимок.PNG (65,5 KБ)
Офлайн
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()
Отредактировано wallet (Март 4, 2017 14:50:27)
Офлайн