Я пытаюсь найти URL-адрес, содержащий '.ics' в href. На днях я протестировал этот код, и он работал отлично, но теперь, когда я пытаюсь найти ссылку в ссылках, 'печать ссылки' приводит к:
<a class="element-invisible element-focusable" href="#main-content"
tabindex="1">Skip to main content</a>
<a class="element-invisible element-focusable" href="#main-content">Skip to
main content</a>
Из-за этого код if link.get ('href') никогда не выполняется, и URL-адрес не возвращается. Что вызывает это, и есть ли другой способ вернуть URL-адрес, содержащий '.ics'?
page = requests.get('https://registrar.fas.harvard.edu/calendar').content
soup = bs4.BeautifulSoup(page, 'lxml')
links = soup.find_all('a')
#print links
for link in links:
print link
if link.get('href') != None and '.ics' in link.get('href'):
endout = link.get('href')
if endout[:6] == 'webcal':
endout ='https' + endout[6:]
print
print 'URL: ' + endout
print
return endout
break
1 ответ
Я бы порекомендовал оптимизировать поиск, передав селектор css href
и шаблон регулярного выражения:
links = soup.find_all('a', {'href' : re.compile('.*\.ics') })
Выход:
[<a class="subscribe" href="https://registrar.fas.harvard.edu/calendar/upcoming/all/export.ics">subscribe</a>,
<a class="ical" href="https://registrar.fas.harvard.edu/calendar/upcoming/all/export.ics">iCal</a>]
Теперь вам не придется перепрыгивать через обручи, чтобы проверить свои теги привязки.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.
return
вне функции?break
в своем циклеfor
? Этотbreak
не позволяет циклу запускаться более одного раза и, следовательно, печатать больше ссылок.return
, выводит мне именно то, что вы хотите, URL-адрес с ".ics" в URL-адресе.URL: https://registrar.fas.harvard.edu/calendar/upcoming/all/export.ics
, но ответ от coldspeed очень подходит! знак равно