LoginSignup
1
0

More than 1 year has passed since last update.

ローカルファイルにrequestsしてBeautifulsoupを使いたいとき

Posted at

移動中のWifiない(あるいは貧弱な)環境で思いつきました。
結論はローカルファイルにあるhtmlファイルをopenしてreadするというだけの話です。

下記サンプルを実行するためには、 "http://quotes.toscrape.com/" へあらかじめアクセスして、ブラウザ上でctrl+Sしてhtmlファイルをローカルファイル"Quote Quotes to Scrape.html"へダウンロードしておく必要があります。
また、当然のことながら、ネットワークアクセスがない状態で試すためにLANケーブルを抜くなり、フライトモードにして実行してください。

import requests
from bs4 import BeautifulSoup

WIFI = False

if WIFI:  # Wifiアクセスできるときはインターネットから取得
    base_url = "http://quotes.toscrape.com/"
    r = requests.get(url).text
else:  # Wifiアクセスできないときはローカルファイルから取得
    base_url = "./Quotes to Scrape.html"
    with open(base_url) as f:
        r = f.read()

soup = Beautifulsoup(r, "html.parser")
# >>> soup.li.a
# => <a href="http://quotes.toscrape.com/page/2/">Next <span aria-hidden="true">→</span></a>

WIFIがあるときはrequestsでインターネットへアクセスし、
WIFIがないときはローカルファイルからHTMLをstrとして読み込みます。

WIFIがあるかどうかも自動化するなら、pingコマンドをsubprocessから打つなり、Ping3, Pingsモジュールを使って実行するとよいそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0