Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 1
Регистрация: 15.03.2017
Сообщений: 9

Ошибка в коде

15.03.2017, 18:33. Показов 4329. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
#!/usr/bin/env python3
from urllib.request import urlopen
from urllib.parse import quote, unquote
from urllib.error import URLError, HTTPError
import re


def get_content(name):
"""
Функция возвращает содержимое вики-страницы name из русской Википедии.
В случае ошибки загрузки или отсутствия страницы возвращается None.
"""
try:
with urlopen('http://ru.wikipedia.org/wiki/' + quote(name)) as page:
content = page.readall().decode('utf-8', errors='ignore')
except (URLError, HTTPError):
return None
return content


def extract_content(page):
"""
Функция принимает на вход содержимое страницы и возвращает 2-элементный
tuple, первый элемент которого — номер позиции, с которой начинается
содержимое статьи, второй элемент — номер позиции, на котором заканчивается
содержимое статьи.
Если содержимое отсутствует, возвращается (0, 0).
"""
if page is None:
return (0, 0)
start = re.search(r'<div id="mw-content-text"', page).start()
finish = re.search(r'NewPP limit report', page).start()
return(start, finish - 1)


def extract_links(page, begin, end):
"""
Функция принимает на вход содержимое страницы и начало и конец интервала,
задающего позицию содержимого статьи на странице и возвращает все имеющиеся
ссылки на другие вики-страницы без повторений и с учётом регистра.
"""
regexp = re.compile(
r'<a\s+(?:[^>]*?\s+)?href=[\'|"]/wiki/([^\'|"]*)[\'|"]', re.IGNORECASE)
links = re.findall(regexp, page[begin:end])
new_answers = []
for link in links:
if link not in new_answers and '#' not in link and ":" not in link:
new_answers.append(unquote(link))
return new_answers


def find_chain(start, finish):
"""
Функция принимает на вход название начальной и конечной статьи и возвращает
список переходов, позволяющий добраться из начальной статьи в конечную.
Первым элементом результата должен быть start, последним — finish.
Если построить переходы невозможно, возвращается None.
"""
name = start
steps = []
if start == finish:
return [start]
while finish not in steps:
page = get_content(name)
if page is None:
return None
else:
steps.append(name)
begin, end = extract_content(page)
links = extract_links(page, begin, end)
if finish in links:
steps.append(finish)
return steps
else:
for link in links:
if link in steps:
continue
else:
name = link
break


if __name__ == '__main__':
pass

написал код, проверяю по тестам, на 4 валится и пишет одно и тоже: Traceback (most recent call last):
File "test_phil.py", line 127, in test_special_symbols
self._check('музыка')
File "test_phil.py", line 106, in _check
self.assertIsChain(t.find_chain(begin, end), begin)
File "test_phil.py", line 15, in get_content
content = page.readall().decode('utf-8', errors='ignore')
AttributeError: 'HTTPResponse' object has no attribute 'readall'
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2017, 18:33
Ответы с готовыми решениями:

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде)
Задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать параллельное соединение с использованием...

Ошибка с графикой в приложении Windows form (ошибка не в коде!)
Всем доброго времени суток! Написал программу в windows form. Несколько раз скомпилировал и все хорошо. Сейчас попробовал снова запустить...

Ошибка 150 при создании таблицы, ошибка в коде?
Код генерируется программой, но работать на сервере нехочет, к сожелению попойму где там может быть ошибка. Опытным путём выяснил что...

2
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
15.03.2017, 18:43
во-первых оформите код в питоновский тэг, а во-вторых укажите версию питона. Например в 3.6 HttpResponse не имеет метода readall()
0
0 / 0 / 1
Регистрация: 15.03.2017
Сообщений: 9
15.03.2017, 19:24  [ТС]
Лучший ответ Сообщение было отмечено Joker37T как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/env python3
from urllib.request import urlopen
from urllib.parse import quote, unquote
from urllib.error import URLError, HTTPError
import re
 
 
def get_content(name):
    """
   Функция возвращает содержимое вики-страницы name из русской Википедии.
   В случае ошибки загрузки или отсутствия страницы возвращается None.
   """
    try:
        with urlopen('http://ru.wikipedia.org/wiki/' + quote(name)) as page:
            content = page.read().decode('utf-8', errors='ignore')
    except (URLError, HTTPError):
        return None
    return content
 
def extract_content(page):
    """
   Функция принимает на вход содержимое страницы и возвращает 2-элементный
   tuple, первый элемент которого — номер позиции, с которой начинается
   содержимое статьи, второй элемент — номер позиции, на котором заканчивается
   содержимое статьи.
   Если содержимое отсутствует, возвращается (0, 0).
   """
    if page is None:
        return (0, 0)
    start = re.search(r'<div id="mw-content-text"', page).start()
    finish = re.search(r'<div id="mw-navigation">', page).start()
    return(start, finish - 1)
 
def extract_links(page, begin, end):
    """
    Функция принимает на вход содержимое страницы и начало и конец интервала,
    задающего позицию содержимого статьи на странице и возвращает все имеющиеся
    ссылки на другие вики-страницы без повторений и с учётом регистра.
    """
    expression = re.compile(r'["\']/wiki/([\w%]+?)["\']', re.IGNORECASE)
    links = re.finditer(expression, page[begin:end])
    result = []
    for link in links:
        if not link.group(1) in result:
            result.append(unquote(link.group(1)))
    return result
 
 
def find_chain(start, finish):
    """
    Функция принимает на вход название начальной и конечной статьи и возвращает
    список переходов, позволяющий добраться из начальной статьи в конечную.
    Первым элементом результата должен быть start, последним — finish.
    Если построить переходы невозможно, возвращается None.
    """
    name = start
    steps = []
    if start == finish:
        return [start]
    while finish not in steps:
        page = get_content(name)
        if page is None:
            return None
        else:
            steps.append(name)
        begin, end = extract_content(page)
        links = extract_links(page, begin, end)
        if finish in links:
            steps.append(finish)
            return steps
        else:
            for link in links:
                if link in steps:
                    continue
                else:
                    name = link
                    break
 
 
 
 
 
 
if __name__ == '__main__':
    pass
версия 3.6
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2017, 19:24
Помогаю со студенческими работами здесь

Ошибка в коде CS0649. Не понятно почему выдает данную ошибку.Также ошибка в форме со словом ref
Код Класса using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ...

Ошибки в коде Qt - ошибка: undefined reference to `qMain(int, char**)'; ошибка: error: ld returned 1 exit status
Здравствуйте, есть проект в нем 2 ошибки, не очень понимаю как их можно решить. Помогите, буду признателен! Вот main.cpp #include...

Ошибка в коде (Ошибка сегментирования (core dumped)
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; string s; while ((ch = cin.get()) != '0' ) ...

Ошибка в коде и ошибка HTTP 400
Здарова всем, у меня тут проблема случилась, я только начинаю программировать. Выдает ошибку HTTP Error 400, проблему нашел, заключалась...

Ошибка в коде , ошибка 200
Всем привет, помогите пожалуйста, я новичек в Паскале, вот программа, суть её переводить любое число в любую систему исчесления, но вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru