BeautifulSoup4でリンクを取得する方法
みなさまおはこんばんにちは、せなです
今回はBeautifulSoup4を使ってリンクを取得する方法を説明したいと思います
リンクを取得
まず、リンクは「href」に設定されているかと思います
BeautifulSoupでは特定のタグの文字列を取得したい時にはfind_all()
メソッドなどの検索用メソッドを使用して取得します
以下のコードをご覧ください
from bs4 import BeautifulSoup
html = """<p id="site"><a href="https://senablog.com/">せなブログ</a></p>
<a href="https://senablog.com/category/programming/" class="category" id="tag1">プログラミング</a>
<a href="https://senablog.com/category/programming/python/" class="category" id="tag2">Python</a>
<a href="https://senablog.com/category/zakki/" class="category" id="tag3">雑記</a>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
tag_list = soup.select('a[href]')
for tag in tag_list:
url = tag.get('href')
print(url)
#https://senablog.com/
#https://senablog.com/category/programming/
#https://senablog.com/category/programming/python/
#https://senablog.com/category/zakki/
今回の場合、find_all()
メソッドを使用すると「soup.find_all('a')
」のように書き方になってしまいます
その場合、hrefを書いていない不要なaタグまで取得してしまい、無駄な処理が発生してしまいます
それを防ぐために使用しているのが、select()
メソッドですselect()
メソッドは色々な使い方ができるためここでの説明は省きますが、find_all()
メソッドなどと違い柔軟に検索することができるので、非常に便利です
以下の記事にselect()メソッドについて書いていますので、良ければ参考にしてください
リンク:BeautifulSoup4のselect()メソッドの使い方について
最後に
BeautifulSoup4でのリンクを取得する方法を説明させていただきました
最初はfind_all()を使えばいいのでは?と思っていましたが、よくよく調べてみると
select()の方が厳密な指定が出来て無駄な処理を行わずに済むと思います
ここまで読んで下さり、ありがとうございました
この記事がお役に立てれば幸いです
ではでは~
ディスカッション
コメント一覧
まだ、コメントがありません