#python #beautifulsoup
#python #beautifulsoup
Вопрос:
Невозможно получить ссылку из href
тега с помощью beautiful soup.
Я предоставил структуру html ниже. Пробовал различную логику извлечения, но код все время возвращается пустым, пожалуйста, сообщите
<div class="review_list_pagination">
<p class="page_link review_next_page">
<a href="/reviews/in/hotel/best-western-star-residency.html"
id="review_next_page_link">Next page </a>
</p>
</div>
Пробовал
link = soup.find_all(attrs={"class": "page_link review_next_page"})
link = soup.find_all('p', attrs = {'class': 'page_link review_next_page'})
Результат:
[<p class="page_link review_next_page"><a href="/reviews/in/hotel/best-western-star-residency.html?page=2amp;amp;" id="review_next_page_link">Next page</a></p>,
<p class="page_link review_next_page"> <a href="/reviews/in/hotel/best western-star-residency.html?page=2amp;amp;" id="review_next_page_link">Next page</a></p>]
Но
print(link[0].get('href'))
Результат: пустой
Ожидаемый: /reviews/in/hotel/best-western-star-residency.html?page=2amp;amp;
Комментарии:
1. возможно, страница использует JavaScript для добавления элемента — BS не может запускать JavaScript.
2. почему вы получаете
<p>
ifhref
is in<a>
?3. Вы можете получить href, потому что вы пытаетесь использовать его в теге p, а не в теге a.
4.
find_all('a', {"id": "review_next_page_link"})[0].get("href")
Ответ №1:
Попробуйте следующее:
link = find('a', {"id": "review_next_page_link"})["href"]
То, что вы получаете, — это тег p из soup. Вы не можете получить свойство внутреннего тега a из тега p, который вы находите.
В строке выше будет найден тег с id =review_next_page_link , и вы можете просто получить его значение href.
Ответ №2:
Ради будущих поколений (: D) вы также можете использовать любой из них:
soup3.select('a[id="review_next_page_link"]')[0]['href']
#or
soup3.select_one('a[id="review_next_page_link"]')['href']
#or
soup3.select('#review_next_page_link')[0]['href']
… и я уверен, что есть и другие способы сделать это. Все они выводят:
'/reviews/in/hotel/best-western-star-residency.html'
Ответ №3:
Существует множество разных способов решения этой проблемы, я остановился на приведенном ниже. Надеюсь, это поможет.
link = soup.find("p",{"class":"page_link review_next_page"}).a['href']