Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Парсер ютуба сработал, но ничего не записалось в файл: data.txt (http://forum.oszone.net/showthread.php?t=339899)

fansat 29-03-2019 08:51 2865718

Парсер ютуба сработал, но ничего не записалось в файл: data.txt
 
Парсер ютуба сработал, но ничего не записалось в файл: data.txt
Не знаю как поставить селекоры --- изменился код страницы youtube

Это сам скрипт:

Код:

# 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"


Iska 29-03-2019 16:33 2865787

Цитата:

Цитата fansat
Не знаю как поставить селекоры --- изменился код страницы youtube »

Открываете Инспектор DOM в своём любимом браузере — и копаете, копаете, копаете. Или Вы предлагаете, чтобы это сделал кто-то за Вас, коллега?

fansat 29-03-2019 16:47 2865792

Спасибо Iska.
----------------
Открываете Инспектор DOM
В Google Chrome такого нет.
Подскажите.

shisik 29-03-2019 18:09 2865808

Вложений: 1
Цитата:

Цитата fansat
В Google Chrome такого нет. »

Есть

fansat 29-03-2019 18:51 2865825

Спасибо.
Я его использовал - правая кн. Код элемента


Время: 16:15.

Время: 16:15.
© OSzone.net 2001-