Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2019, 08:12   #1
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 79
По умолчанию Парсер ютуба сработал, но ничего не записалось в файл: data.txt

Это сам скрипт:
Код:
# coding: utf8
# == pars_playlist.py
# == select short information from Yotube playlist -- 
from urllib import urlopen
from BeautifulSoup import BeautifulSoup

print   "pars_playlist working..."

# == get first linkof playlist ==
url = raw_input('input link:')
url = "https://www.youtube.com/playlist?list=PLku9se_HAVOrs3p_jJzZAbV3BEODrhS3j"

fh = open('data.txt', 'w')

cur_num = 1		# index of reading page
try: 
		while True:
			# -- get curent page --
			print cur_num
			print url
			content = urlopen( url )
			page = content.read()	
				
			# -- cut head
			soup = BeautifulSoup(page)
			body = soup.find('body')

			# get current title
			span = body.find(id="video-title")
			title = span.getText()
			print title

			# get list of all links
			ol = body.find(id="items")
			lis = ol.findAll('li')

			# soup for current page
			for idx, li in enumerate(lis): # seek for picture
				li_title = li["data-video-title"] 
				if li_title  == title: break
			video_id = li["data-video-id"]

			# get picture information
			img = li.find('img')
			img_src = img['src']
			pos = img_src.find('?')
			if pos > 0: img_src = img_src[:pos]

			# get description of page
			descr = body.find(id="eow-description")
			descr_text = descr.getText()

			# save information
			fh.write(title.encode('utf8') + '\n')
			fh.write(video_id.encode('utf8') + '\n')
			fh.write(img_src.encode('utf8') + '\n')
			fh.write(descr_text.encode('utf8') + '\n')
			fh.write('\n')

			if idx >=len(lis) -1: break

			# get next url
			idx += 1
			li = lis[ idx ]
			anc = li.find('a')
			href = anc['href']
			url = "https://www.youtube.com" + href

			cur_num = cur_num + 1

	# == 05 end of work ==
except: 
	print "exception: " + str(cur_num)
	pass
finally:
	fh.close()
	print "ok"
satfan вне форума Ответить с цитированием
Старый 29.03.2019, 09:21   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как узнали, что сработал?
Добавьте больше отладочной печати.

И используйте with для закрытия файлов.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.03.2019, 09:36   #3
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 79
По умолчанию Не срабатывает скрипт парсер поиска в ютубе

По видеоуроку парсер сработал и он просит ссылку плейлиста:

==== RESTART: C:\Users\Александр\Desktop\py053__ Youtube\pars_playlist.py ====
pars_playlist working...
input link:
------------------------------------------
Далее я вставляю ссылку:
pars_playlist working...
input link:https://www.youtube.com/playlist?lis...ZAbV3BEODrhS3j
1
https://www.youtube.com/playlist?lis...ZAbV3BEODrhS3j
exception: 1
ok
>>>
По видеоуроку сменились селекторы CSS
satfan вне форума Ответить с цитированием
Старый 29.03.2019, 09:47   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что отработало-то если exception?
И зачем вы их игнорируете? Выведите что в нем или уберите вообще except.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.03.2019, 09:53   #5
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 79
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что отработало-то если exception?
И зачем вы их игнорируете? Выведите что в нем или уберите вообще except.
Скрипт писал по видеоуроку: https://www.youtube.com/watch?v=F5qv8GBeOCU&t=43s
Всё как у него. Селекторы CSS у меня изменились. Я не знаю как их исправить в скрипте.
satfan вне форума Ответить с цитированием
Старый 29.03.2019, 10:09   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не надо заменять мозг видеоуроком, книгой и т.п.
Особенно в данном случае когда у вас и у автора примера скорее всего разные входные данные потому что ютуб за полгода 100500 раз мог что-то поменять + зависит от страны, языка, рандома (А/Б тестирование, ...) и т.д.

Я же сказал в какую сторону думать и с чего начать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для скачивания видео с ютуба ололошенько Софт 12 30.03.2019 20:55
Красивая видео галерея из плей листа ютуба Berdini PHP 0 26.01.2016 16:02
как отредактировать или создать файл формата .data eko31 Помощь студентам 1 16.04.2013 11:43
Закодировать файл для отправки через multipart/form-data winhttp C# (си шарп) 0 06.01.2013 19:11
Скачать видео с кинозала ютуба ZvEr_HaCkEr Свободное общение 6 06.02.2012 18:06