Я столкнулся с стеной, почему этот код не работает, даже думал, что это тот же код, что и в онлайн-учебнике Python Web Scraping Tutorial 5 (Network Requests). Я попытался запустить код также через онлайн-интерпретатор Python.Веб-скребок с использованием regex
import urllib
import re
htmltext = urllib.urlopen("https://www.google.com/finance?q=AAPL")
regex = '<span id="ref_[^.]*_l">(.+?)</span>'
pattern = re.compile(regex)
results = re.findall(pattern,htmltext)
results
я получаю:
re.pyc in findall(pattern, string, flags)
175
176 Empty matches are included in the result."""
--> 177 return _compile(pattern, flags).findall(string)
178
179 if sys.hexversion >= 0x02020000:
TypeError: expected string or buffer
Ожидаемый результат (ы):
112.71
оцененная помощь. Я попытался использовать «read()» в URL-адресе, но это не сработало. Согласно документации, должны быть включены даже пустые результаты. Спасибо
Существует ошибка в вашем шаблоне регулярного выражения правильный шаблон будет « (. +?) <\/span>' – ZdaR
Если учебное пособие, которое вы используете, предлагает использовать регулярные выражения для очистки веб-страниц, найти другую; HTML-парсеры существуют по какой-то причине. – jonrsharpe
@ZdaR ну нет ... '/' не требует экранирования в регулярных выражениях ... –