Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2017 17:38:56

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Тип None

Есть код в котором вылетает ошибка типа: “Переменная 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)

Офлайн

#2 Март 3, 2017 18:06:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Тип None

ELVYY
Наберите HTML код своими руками просто тупо строкой или локальным файлом. Скормите этот HTML BeautifulSoup-пу и посмотрите что получается.

ПС.
А вы как дальше вообще работать собираетесь? Дорогой друг, такая наша профессия - каждый день, постоянно и непременно сталкиваться с какими-то непонятными факапами. Давайте уже как-то самостоятельно отлаживать свои программы. Есть развитые средства отладки, дебаггеры, вотчеры, встроенная в питон интроспекция, тупо принты можно рассовать по коду. Тестовые данные для отладки программы нужно создать, как правило, написать юнит тесты для всех компонентов. Вы хотите, чтобы за вас это кто-то другой делал? Ничего подобного, никто не пишет безгрешных программ сразу и без ошибок, отладка у всех и каждого занимает очень много времени. Занимайтесь этим сами.
Ну и наконец, вы хотя бы с помощью dir посмотрели что есть у объекта soup?
Прочитали ли вы справку по методу find? Вот откуда у вас уверенность, что find ищет в дереве потомков, а не в непосредственных потомках? Откуда вы откопали параметр class_ (я не нашел его в документации)?
Да ни черта вы не сделали.



Отредактировано FishHook (Март 3, 2017 18:11:27)

Офлайн

#3 Март 3, 2017 20:28:02

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Тип None

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

Отредактировано ELVYY (Март 3, 2017 20:28:54)

Прикреплённый файлы:
attachment Снимок.PNG (65,5 KБ)

Офлайн

#4 Март 4, 2017 00:48:00

wallet
Зарегистрирован: 2016-02-21
Сообщения: 50
Репутация: +  2  -
Профиль  

Тип None

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version