Поиск строк и символов в Python из web страницы. Как реализовать?

Само задание взято отсюда: https://stepik.org/lesson/209719/step/2?unit=183222
Ссылка https://ru.wikipedia.org/wiki/Python содержит статью с Википедии про язык Python. В этой статье есть теги code, которыми выделяются конструкции на языке Python. Вам нужно найти все строки, содержащиеся между тегами <code> и </code> и найти те строки, которые встречаются чаще всего и вывести их в алфавитном порядке, разделяя пробелами.

Например, если исходный текст страницы выглядел бы так:

<code>a</code>
<a>bracadabr</a>
<code>c</code>
<code>b</code>
<code>b</code>
<code>c</code>

то в ответ надо было бы ввести строку "b c" Как я это решил:

import re
from urllib.request import urlopen

html = urlopen ("https://ru.wikipedia.org/wiki/Python").read().decode("utf-8")
m = ['a-z']
a = re.findall((r'<code>[a-b]</code>'), str)
print(a)

Всё бы хорошо, но выдает ошибку: expected string or bytes-like object

С чем это может быть связано?


Ответы (1 шт):

Автор решения: CrazyElf
a = re.findall((r'<code>[a-b]</code>'), str)

str - это такой тип данных в питоне, а вы пытаетесь в нём что-то найти как в переменной, поэтому и возникает ошибка:

TypeError: expected string or bytes-like object

Искать надо в скачанной вами страничке html. И искать надо произвольный текст между тегами, причём в "не жадном" режиме, и ещё нас интересует только этот текст, без самих тегов, итого строчка кода для поиска должна быть такая:

a = re.findall((r'<code>(.*?)</code>'), html)

Остальное решение не пишу, хоть что-то постарайтесь сделать сами.

→ Ссылка