【Python】ページ内のリンクを取得する
機能
ページ内のリンクを取得するPythonプログラムです。
指定URLのページ内リンクを取得し、リンクテキストとリンクURLの一覧をクリップボードにコピーします。
一覧はタブ区切りされているので、そのままExcelに貼り付けることができます。
読者になる https://blog.hatena.ne.jp/stmtk358/stmtk358.hatenablog.com/subscribe?utm_campaign=subscribe_blog&utm_source=blogs_topright_button&utm_medium=button stmtkブログ https://stmtk358.hatenablog.com/ トップ https://stmtk358.hatenablog.com/ Python https://stmtk358.hatenablog.com/archive/category/Python 2021-07-13 https://stmtk358.hatenablog.com/archive/2021/07/13 【Python】テキストの各行にプレフィックスを追加する https://stmtk358.hatenablog.com/entry/2021/07/13/080256 Python-文字列 https://stmtk358.hatenablog.com/archive/category/Python-%E6%96%87%E5%AD%97%E5%88%97
サンプル動画
プログラム
#! Python3 # 機能 # ページ内のリンクを取得する # 使い方 # 1.Pythonを実行する # 実行コマンド # python link_getter.py URL # python link_getter.py https://stmtk358.hatenablog.com/entry/2021/07/13/080256 import re import sys import bs4 import requests import pyperclip from urllib.parse import urljoin # ページ内のリンクを取得する関数 def get_link(url): # ページ取得 res = requests.get(url) res.raise_for_status() # リンク取得 soup = bs4.BeautifulSoup(res.text, "lxml") links = soup.select("a") keys = set() results = [] for link in links: # リンクURL取得 link_url = link.get("href") if not link_url: continue # URL補完 if not link_url.startswith("http"): link_url = urljoin(url, link_url) # リンクテキスト取得 link_text = link.text if not link_text: link_text = "" link_text = link_text.strip() link_text = re.sub(r"\n", " ", link_text) # 重複削除 key = link_url + link_text if key in keys: continue keys.add(key) results.append({"url": link_url, "text": link_text}) return results # リンク一覧をクリップボードにコピーする関数 def copy_link(url): # リンク取得 results = get_link(url) # クリップボードにコピー text = "" for result in results: text += result["text"] + "\t" + result["url"] + "\n" pyperclip.copy(text) print("クリップボードにコピーしました。") if len(sys.argv) != 2: sys.exit("使い方:python link_getter.py URL") copy_link(sys.argv[1])
使い方
- Pythonを実行する
実行コマンド
python link_getter.py URL
requestsとbs4とpyperclipをインストールしていない場合は以下のコマンドを実行して下さい。
pip install requests pip install beautifulsoup4 pip install pyperclip