2015-03-20 2 views
-1

Моя программа рекурсивно обрабатывает строку, чтобы отменить ее. Я хотел бы, чтобы он извлекал данные непосредственно с веб-сайта, а не текстовый файл, как в настоящее время, но я не могу заставить его извлекать данные с веб-сайта.Прочитать текстовые данные с сайта

import urllib.request 

def reverse(alist): 
    #print(alist) 
    if alist == []: 
     return [] 
    else: 
     return reverse(alist[1:]) + [alist[0]] 

def main(): 
    #file1 = urllib.request.urlopen('http://devel.cs.stolaf.edu/parallel/data/cathat.txt').read() 
    file1 = open('cat.txt','r') 
    for line in file1: 
     stulist = line.split() 
     x = reverse(stulist) 
     print(' '.join(x)) 
    file1.close() 

main() 

Записанные строки должны показать, что я пробовал.

+0

Если вы пытаетесь разобрать HTML попробовать использовать пакет «BeautifulSoup». Возможна установка протокола, т.е. '' 'pip install beautifulsoup'''. – marcusshep

+0

Вопросы должны быть конкретными, иметь определенные ответы и очень мало двусмысленности (в идеале, нет). Что вы пытаетесь спросить? – hd1

+0

http://devel.cs.stolaf.edu/parallel/data/cathat.txt txt-файл по этой ссылке - это то, что я пытаюсь прочитать –

ответ

1

Вы можете использовать URL, обычно в виде файла:

import urllib 
... 
f = urllib.urlopen(url) 
for line in f: 
    ... 
f.close() 

То, что вы сделали, чтобы позвонить read на открытой ссылке. Итак, вы прочитали весь контент в переменной file1, а file1 стал строкой.

Для Python 3:

import urllib.request 
... 
f = urllib.request.urlopen(url) 
for line in f: 
    ... 
f.close() 

Кроме того, необходимо преобразовать каждую строку в правильной кодировке. Если кодировка utf-8, то вы можете сделать следующее:

for line in f: 
    line = line.decode("utf-8") 
+0

, когда Я делаю то, что я получаю: AttributeError: объект 'module' не имеет атрибута 'urlopen' –

+0

использовать 'import urllib' – JuniorCompressor

+0

Да, такая же ошибка. –

0
import urllib2 

def reverse(alist): 
    if alist == []: 
     return [] 
    else: 
     return reverse(alist[1:]) + [alist[0]] 

def main(): 

    lines = [line.strip() for line in urllib2.urlopen('http://devel.cs.stolaf.edu/parallel/data/cathat.txt')] 
    print lines 
    print lines[::-1] 
main() 

Выход

['The cat in the party hat', 'wore the hat', 'to the cat hat party.'] 
['to the cat hat party.', 'wore the hat', 'The cat in the party hat'] 
+0

Я пробовал это раньше, но я получаю: ImportError: Нет модуля с именем' urllib2 'Очевидно, что этот модуль поставляется с python, но я не вижу его на python 3.4 .3 –

+0

@DeandreYuselfBauswell - Это потому, что вы используете 'Python3'.' Urllib2' разделен на несколько модулей в 'P ython 3.x'. Используйте приведенный выше ответ для доступа к вашему файлу. – letsc