Beautifulsoup でWebページのリンクを抽出する


参考にしたページ
PythonでWebページのリンクを抽出するスクリプトを書いた
この例は、python2 用なので、python3 用に書き換えました。
HTTP Error 403: Forbidden を回避するようにしました。

実行結果

$ ./get_url.py  https://ekzemplaro.org
en/      
English
ekzemplaro/      
言語とデータベースの接続プログラムサンプル集
audio_books/     オーディオブック
librivox/    LibriVox の勧め
./audio/     Audio
http://www.hi-ho.ne.jp/linux     オープンソース開発
./raspberry/     Raspberry Pi
./storytelling/      ストーリーテリング
./crowdsourcing/     クラウドソーシング
https://twitter.com/ekzemplaro   私のツイッター
https://github.com/ekzemplaro/   GitHub
qiita/   Qiita
./test_dir/      テストコーナー
get_url.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#   get_url.py
#
#                   Aug/18/2018
#
# ------------------------------------------------------------------
import requests
import sys
from bs4 import BeautifulSoup
#
url = sys.argv[1]
headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0",}
#
try:
    rr = requests.get(url,headers=headers)
    html = rr.content
    try:
        soup = BeautifulSoup(html, "html.parser")
        for aa in soup.find_all("a"):
            link = aa.get("href")
            name = aa.get_text()
            print(link,"\t",name)
    except Exception as ee:
        sys.stderr.write("*** error *** in BeautifulSoup ***\n")
        sys.stderr.write(str(ee) + "\n")
#

except Exception as ee:
    sys.stderr.write("*** error *** in requests.get ***\n")
    sys.stderr.write(str(ee) + "\n")
#
# ------------------------------------------------------------------
# ------------------------------------------------------------------

Arch Linux での requests と beautifulsoup4 のインストール方法

sudo pacman -S python-requests
sudo pacman -S python-beautifulsoup4

次のバージョンで動作を確認しました。

$ python --version
Python 3.9.5