Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 2, 2019 10:58:28

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

 # -*- coding: utf-8 -*-
import urllib
from urllib import request
from urllib.parse import quote
import re, os, sys
def findyoutube(x):
    mas=[]
    sq='http://www.youtube.com/results?search_query='+quote(x)
    doc = urllib.request.urlopen(sq).read().decode('cp1251',errors='ignore')
    match = re.findall("\?v\=(.+?)\"", doc)
    if not(match is None):
        for ii in match:
            if(len(ii)<25):
                mas.append(ii)
    mas=dict(zip(mas,mas)).values()
    mas2=[]
    for y in mas: mas2.append('http://www.youtube.com/watch?v='+y)
    return mas2
print(findyoutube('болонская+удочка'))

Офлайн

#2 Фев. 3, 2019 13:43:30

uf4JaiD5
Зарегистрирован: 2018-12-28
Сообщения: 76
Репутация: +  4  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

satfan
Не срабатывает скрипт парсер поиска в ютубе
А что именно не срабатывает?

satfan
.decode('cp1251'
Ютуб кому-то отдаёт cp1251? Тут наверняка должно быть ‘utf-8’.

satfan
mas=dict(zip(mas,mas)).values()
Это чтобы от повторяющихся значений избавиться что ли? Круто.
Но проще в множество (set) данные положить.

Предлагаю переписать так:
 #
from urllib import request
from urllib.parse import quote
import re
def findyoutube(x):
	sq='http://www.youtube.com/results?search_query='+quote(x)
	doc = request.urlopen(sq).read().decode('utf-8',errors='ignore')
	match = re.findall("\?v\=(.+?)\"", doc)
	mas = ['http://www.youtube.com/watch?v='+i for i in set(match) if len(i)<25]
	return mas

Офлайн

#3 Фев. 3, 2019 14:35:01

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

Уважаемый uf4JaiD5.
Спасибо за помощь. Я только начинаю.
=================================
Выдало это:
Traceback (most recent call last):
File “C:\Documents and Settings\Admin\Рабочий стол\Копия Делаем парсер youtube\video.py”, line 2, in <module>
import request
ImportError: No module named request
====================================================
Модуль ставил так:
C:\Python27\python.exe -m pip install bs4

Офлайн

#4 Фев. 3, 2019 15:26:52

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

для python 2.7 попробуй

 from urllib import urlopen

Отредактировано Romissevd (Фев. 3, 2019 15:31:10)

Офлайн

#5 Фев. 3, 2019 15:33:26

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

Попробуй так

 import urllib
import re, os, sys
def findyoutube(x):
    mas=[]
    sq='http://www.youtube.com/results?search_query='+quote(x)
    doc = urllib.urlopen(sq).read().decode('cp1251',errors='ignore')
    match = re.findall("\?v\=(.+?)\"", doc)
    if not(match is None):
        for ii in match:
            if(len(ii)<25):
                mas.append(ii)
    mas=dict(zip(mas,mas)).values()
    mas2=[]
    for y in mas: mas2.append('http://www.youtube.com/watch?v='+y)
    return mas2
print(findyoutube('болонская+удочка'))

Офлайн

#6 Фев. 3, 2019 16:28:43

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

Спасибо за поддержку Romissevd
У меня версия 2.7
Ваш вариант даёт:
============================
Traceback (most recent call last):
File “C:\Documents and Settings\Admin\Рабочий стол\Копия Делаем парсер youtube\123.py”, line 16, in <module>
print(findyoutube('болонская+удочка'))
File “C:\Documents and Settings\Admin\Рабочий стол\Копия Делаем парсер youtube\123.py”, line 5, in findyoutube
sq='http://www.youtube.com/results?search_query='+quote(x)
NameError: global name ‘quote’ is not defined

Офлайн

#7 Фев. 3, 2019 16:37:43

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

 sq='http://www.youtube.com/results?search_query='+urllib.quote(x)

Офлайн

#8 Фев. 3, 2019 16:48:10

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

Уважаемый Romissevd
Всё сработало. Просто супер.
1.Только все ссылки без названия видео.
2. Скрипт не создал текстовый файл.

Отредактировано satfan (Фев. 3, 2019 16:53:46)

Офлайн

#9 Фев. 3, 2019 16:57:21

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

satfan
1.Только все ссылки без названия видео.
тут нужно смотреть, что приходит к тебе на разбор и что ты из этого извлекаешь
satfan
2. Скрипт не создал текстовый файл.
твой скрипт не создает текстовый файл

Офлайн

#10 Фев. 3, 2019 17:01:40

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Не срабатывает скрипт парсер поиска в ютубе

Спасибо.
Я в скрипт вставил:
# -*- coding: utf-8 -*-
Стал искать правильно.
===================
Помоги с этими вопросами:
1.Только все ссылки без названия видео.
2. Скрипт не создал текстовый файл.
===========================
Делаю так:
———————————-
output = open(“output.txt”, ‘w’)
print(lalala, file=output)
output.close()
———————————-
Ошибка: После слова – file= выделилось красным

Отредактировано satfan (Фев. 3, 2019 17:35:02)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version