スクレイピング

01. Pythonでデータをダウンロード
02. HTMLを解析しよう
03. 表データを読み書きしよう
04. オープンデータを分析してみよう
05. Web APIでデータを収集しよう

参考教科書:Python2年生スクレイピングのしくみ

スクレイピングの詳細

01. Pythonでデータをダウンロード

コード

import requests

# Webページを取得する
url = "https://www.ymori.com/books/python2nen/test1.html"
response = requests.get(url)

# 文字化けしないようにする
response.encoding = response.apparent_encoding

# ファイルを書き込みモードで開いて
filename = "download.txt"
with open(filename, mode="w") as f:
	# ネットから取得した読み込んだデータを書き込む
	f.write(response.text)

結果

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Python2年生</title>
	</head>
	<body>
		<h2>第1章 Pythonでデータをダウンロード</h2>
		<ol>
			<li>スクレイピングってなに?</li>
			<li>Pythonをインストールしてみよう</li>
			<li>requestsでアクセスしてみよう</li>
		</ol>
	</body>
</html>

02. HTMLを解析しよう

コード

import requests
from bs4 import BeautifulSoup
import urllib

# Webページを取得して解析する
load_url = "https://www.ymori.com/books/python2nen/test2.html"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")

# すべてのimgタグを検索し、リンクを取得する
for element in soup.find_all("img"):
	src = element.get("src")
	
	# 絶対URLと、ファイルを表示する
	image_url = urllib.parse.urljoin(load_url, src)
	filename = image_url.split("/")[-1]
	print(image_url, ">>", filename)

結果

03. 表データを読み書きしよう

04. オープンデータを分析してみよう

05. Web APIでデータを収集しよう

コード

from datetime import datetime, timedelta, timezone

# UTC(協定世界時)をJST(日本標準時)に変換
timestamp = 1562889600

tz = timezone(timedelta(), 'UTC')
utc = datetime.fromtimestamp(timestamp, tz)
print(utc)

tz = timezone(timedelta(hours=+9), 'JST')
jst = datetime.fromtimestamp(timestamp, tz)
print(jst)
print(str(jst)[:-9])

結果