ELVYY
Март 3, 2017 17:38:56
Есть код в котором вылетает ошибка типа: “Переменная 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
Март 3, 2017 18:06:56
ELVYY
Наберите HTML код своими руками просто тупо строкой или локальным файлом. Скормите этот HTML BeautifulSoup-пу и посмотрите что получается.
ПС.
А вы как дальше вообще работать собираетесь? Дорогой друг, такая наша профессия - каждый день, постоянно и непременно сталкиваться с какими-то непонятными факапами. Давайте уже как-то самостоятельно отлаживать свои программы. Есть развитые средства отладки, дебаггеры, вотчеры, встроенная в питон интроспекция, тупо принты можно рассовать по коду. Тестовые данные для отладки программы нужно создать, как правило, написать юнит тесты для всех компонентов. Вы хотите, чтобы за вас это кто-то другой делал? Ничего подобного, никто не пишет безгрешных программ сразу и без ошибок, отладка у всех и каждого занимает очень много времени. Занимайтесь этим сами.
Ну и наконец, вы хотя бы с помощью dir посмотрели что есть у объекта soup?
Прочитали ли вы справку по методу find? Вот откуда у вас уверенность, что find ищет в дереве потомков, а не в непосредственных потомках? Откуда вы откопали параметр class_ (я не нашел его в документации)?
Да ни черта вы не сделали.
ELVYY
Март 3, 2017 20:28:02
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