|
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
|
|
| 15.03.2017, 18:33 | |
|
Ответы с готовыми решениями:
2
Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде) Ошибка с графикой в приложении Windows form (ошибка не в коде!) Ошибка 150 при создании таблицы, ошибка в коде? |
|
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 как решение
Решение
0
|
||||||
| 15.03.2017, 19:24 | |
|
Помогаю со студенческими работами здесь
3
Ошибки в коде Qt - ошибка: undefined reference to `qMain(int, char**)'; ошибка: error: ld returned 1 exit status Ошибка в коде (Ошибка сегментирования (core dumped) Ошибка в коде и ошибка HTTP 400 Ошибка в коде , ошибка 200 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оптимизация кода на разграничение прав доступа к элементам формы
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
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|