2016-03-29 5 views
0
import collections.OrderedDict 
    import requests 
    from bs4 import BeautifulSoup 
    r = requests.get('https://www.youtube.com/playlist?list=PLIeGtxpvyG-JI5RDHtjk0NtyQPirBfBpu') 
    r.status_code 
    if r.status_code == 200 : 
     soup = BeautifulSoup (r.text,'html.parser') 

    OrderedDict.dict = {} 
    for i in soup.findAll('td',{'class':'pl-video-title'}): 
     #print i 
     dict [i.find('a').text] = i.findAll('td' , { 'class': "pl-video-time"})[0].text 

for i,k in collections.OrderedDict.dict.items(): 
    print i, k 

Мне удалось запустить программу успешно, но я хочу сохранить тот же порядок. Я хочу знать, как использовать модуль «OrderedDict» в моем случае. Если я использую модуль «OrderedDict», я получаю сообщение об ошибке.Отключить словарь по умолчанию автоматический

+1

Во-первых, какова ваша ошибка? Не могли бы вы включить это и полную трассировку? Во-вторых, 'import collections.OrderedDict' - это не то, как вы импортируете' OrderedDict'. Это не модуль, это класс в модуле 'collections'. Вместо этого сделайте 'из коллекции import OrderedDict'. Чтобы создать 'OrderedDict' do' my_od = OrderedDict() '. –

ответ

1
from collections import OrderedDict 
import requests 
from bs4 import BeautifulSoup 

r = requests.get('https://www.youtube.com/playlist?list=PLIeGtxpvyG-JI5RDHtjk0NtyQPirBfBpu') 

if r.status_code == 200: 
    soup = BeautifulSoup(r.text, 'html.parser') 

    d = OrderedDict() 
    for i in soup.findAll('td', {'class': 'pl-video-title'}): 
     d[i.find('a').text] = i.findAll('td', {'class': "pl-video-time"})[0].text 

    for i, k in d.items(): 
     print i, k 

Прежде все, вам нужно импортировать OrderedDict из coll модуль ections.

Я удалил оборванный файл r.status_code, так как он ничего не делает, а затем поместил все внутри if r.status_code == 200, иначе вы получите исключение NameError, я также изменил dict на d, так как вы затенять эту переменную, кроме того, я немного исправил форматирование.

0

для создания экземпляра OrderedDict вы должны сделать

myOrderedDict = OrderedDict([]) 

не

OrderedDict.dict = {} 

и перебрать упорядоченный ДИКТ было бы

for i,j in in myOrderedDict.items(): 
    #do something with i and j 
+1

Его импорт испорчен, поэтому вы можете включить его в свой ответ. –

+0

Если он хочет «переопределить» dict, тогда он должен написать dict = OrderedDict. Если нет, он не должен писать dict = OrderedDict() либо – Schore

+0

ах право, исправил его, спасибо! –

Смежные вопросы