Я использую этот код, найденный здесь (retrieve links from web page using python and BeautifulSoup), чтобы извлечь все ссылки с веб-сайта.Невозможно найти все ссылки с BeautifulSoup для извлечения ссылок с веб-сайта (идентификация ссылки)
import httplib2
from BeautifulSoup import BeautifulSoup, SoupStrainer
http = httplib2.Http()
status, response = http.request('http://www.bestwestern.com.au')
for link in BeautifulSoup(response, parseOnlyThese=SoupStrainer('a')):
if link.has_attr('href'):
print link['href']
Я использую этот сайт http://www.bestwestern.com.au как тест. К сожалению, я заметил, что код не извлекает некоторые ссылки, например, этот http://www.bestwestern.com.au/about-us/careers/. Я не знаю почему. В коде страницы это то, что я нашел.
<li><a href="http://www.bestwestern.com.au/about-us/careers/">Careers</a></li>
Я думаю, что экстрактор должен обычно идентифицировать его. В документации BeautifulSoup я могу прочитать: «Наиболее распространенным типом неожиданного поведения является то, что вы не можете найти тег, который, как вы знаете, находится в документе. Вы видели, как это происходит, но find_all() возвращает [] или find() возвращает None. Это еще одна распространенная проблема с встроенным парсером HTML Python, который иногда пропускает теги, которые он не понимает. Опять же, решение заключается в установке lxml или html5lib. " Итак, я установил html5lib. Но у меня все еще такое же поведение.
Спасибо за вашу помощь
Я на самом деле не вижу «Карьера» ссылка на эту страницу - мы ищем на той же странице .. – alecxe
Вы увидите «карьеры» ссылка глядя карта сайта здесь HTTP: // WWW? .bestwestern.com.au/sitemap/ – BND