Python3関連のことを調べてみた2023年02月13日

Python3関連のことを調べてみた2023年02月13日

Webスクレイパーを作ろう #1

# Pythonを使ってWebスクレイパーを作る

この記事では,Pythonを使ってWebスクレイパーを作ることを目的としています.
今回は,ココオルのつぶやきを集めるというスクレイパーを作成していきます.
2回に分けて解説していきます.

# 環境準備

インストールするもの
– requests : Webページの情報を取得するのに使用
– BeautifulSoup : WebページのHTMLから必要な情報を抽出するのに使用

“`
pip install beautiflsoup4
pip install requests
pip install html5lib
“`

ライブラリのインポート

“`.py
from bs4 import BeautifulSoup
import requests
import html5lib
import time #収集の際に時間間隔をあけるために使用
“`

# Webページの構造の確認
https://cocooru.com/mutters?page=1
を開き,アクセス後F12キーを押し,左上の矢印をクリック後,カーソル

元記事を表示

class-based viewとfunction-based viewの違い

# class-based viewとfunction-based viewの違い
 本稿ではDjangoの実装でよく用いられるけど、似ているからごっちゃになる2つについて説明します。

## イメージでとらえる
 具体的な説明に入る前に、まずはイメージで捉えていきたいと思います。
– class-based view:お惣菜
– function-based view:料理
です。

 お惣菜は、便利です。料理をしたくないときに買ってきたら、すぐ食べることができるし、一定のおいしさは担保されています。しかし、「もうちょっと味濃かったらな」とか「具材の組み合わせがなんか違う」といったような融通の利かなさが出てくるかもしれません。
 一方で料理はめんどくさいです。献立を決めて、食材を選び、調理をしなくては食べれません。おいしさだって「砂糖と塩を間違える」といったべたなミスや、「焼きすぎ、煮込みすぎ」などの調理ミスで左右されます。しかし、自分の思うように作ることができます。味も食材も自分の自由です。

 class-based viewとfunction-based viewも同じ関係です

元記事を表示

SKJvillageのスクリーンショット内の顔認識

# 1.あらすじ
 今回は導入として、pythonとOpenCVを用いて、ゲーム実況系Youtubeグループ[SKJvillage](https://www.youtube.com/@SKJVillage)のスクリーンショットからメンバー3人(その他の人物も含む)の顔認識を試みました!

# 2.顔認識とは
 顔認識とは、データの中で顔を検出することです。方式は人によって様々ですが、今回は下の画像のように顔認識を行うと顔の部分に赤枠が生成されます。
![arigatou-detect2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/68b27fd9-749f-0f32-3d18-fdfe3bcb608b.png)

# 3.実験方法
 今回は、OpenCVに存在する分類器を用いてpythonで実行し、スクリーンショットに対する顔認識を行います。実行にはGoogle Colaboratoryを用います。プログラムを以下に示し、プログラムの後に詳細を説明します。
※Googleアカウントを持

元記事を表示

Python学習、ボール取り出しゲームの作成

こんちわ、kmdです。

学習3週間目です。
今回はこのような問題を解いていきました。
↓ 参考サイト
https://joytas.net/programming/python/python%E6%BC%94%E7%BF%92%E5%95%8F%E9%A1%8C%E5%88%9D%E7%B4%9A

“`
1~99の番号のついたボールが計99個入っている袋
その中から2人が交互にボールを取り出し大きい数を引いた方が勝ちとなる。
ゲームは5回戦で競う。
なお、取り出したボールは袋に戻さないものとする(同じボールを二度ひくことはない)
“`

“`ballgame.py
import random

def game():
balls=list(range(1,100))
random.shuffle(balls)
playerwin = 0
comwin = 0
for i in range(5):
player = 0
com = 0
player = balls[i] #プレイヤーにリ

元記事を表示

【AtCoder】ABC289 のA,B,C,D における Python解説

ABC 289のA,B,C,D 問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、問題の難易度を表す指標を [Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 886](https://atcoder.jp/users/tsuru1471)
230211 現在

# 目次
[はじめに](#はじめに)
[A.flip](#aflip)
[B.レ/V](#bレv)
[C.Coverage](#ccoverage)
[D.Step Up Robot](#dstep-up-robot)

元記事を表示

C言語でpythonのモジュールを作る

C言語でpythonのモジュールを作ってみる。

# 環境

Ubuntu22.04LTS
python3.10
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0

今回は、/dev/randomから真性乱数を取得するCのソースを使って、それでモジュールを作ってみます。
モジュール名、frandom

# ソース

“`frandommodule.c
#include
#include
#include

static FILE *fp=NULL;
static int count=0;
#define RANDOMMAX (0x0000ffffffffffff)

// サブ関数
// 48bit符号なし整数の乱数を乱数デバイスから得る
//
static int64_t get_48bit_random() {
int c;
char buff[sizeof (int64_t)]={0,0,0,0,0,0,0,0};
for (int idx=

元記事を表示

selenium4 で スクレイピング

とりあえず、動くコード

ヤフーのソースを表示するだけ。

“`
yum -y install libX11 GConf2 fontconfig
yum -y install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts
fc-cache -fv
yum -y install google-chrome-stable libOSMesa
python3 -m pip install selenium
python3 -m pip install webdriver-manager
“`

今回はwebdriver-managerを使用するので、わざわざドライバをダウンロードする必要がない。

# chrome

“`hoge.py
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.support.ui import WebDriverWai

元記事を表示

Pythonでの音声信号処理 (10) ノコギリ波の周波数を解析

## 今回のテーマ
以前、ノコギリ波を秒間440回繰り返して音を出したときの波のデータについて、どのような周波数が含まれているのかを調べてみる。

(前回挙げた疑問点の残るひとつは、とりあえず保留して次回以降へ)

## やってみた

“`p10_1.py
# -*- coding: utf-8 -*-
import sys
sys.dont_write_bytecode = True

from Grp import Line, Bar
import Dummy as dmy
import numpy as np
import Analyze as ana
from multiprocessing import Process
import time
import math

def main():
orgsmpl = 44100 # サンプリングレートは44.1KHz
sec = 1 # 1秒分

# ノコギリ波
# -> 440回繰り返したいので、サンプル数を440分の1にして、あとで440回繰り返す
smpl = int(

元記事を表示

Python: 剰余演算子を使わないでFizzBuzzしてみた

[剰余演算子を使わずにFizzBuzzを解く](https://qiita.com/nkfrom_asu/items/783c6be996abe6cc2a67) の題名を見て「そうだよな剰余演算子って別になくてもできるよな」って妙に納得してしまったので、自分だったらどうやるかな?と思って考えてみました。

「3の倍数かどうか」 と考えれば剰余演算子の出番ですが、「みっつめごとに”Fizz”になる」と考えれば別のやりかたがありそうです。

“`py:
def print_fizzbuzz(n):
for i, fb in enumerate(fizzbuzz_gen()):
if i >= n :
return
print(fb)

def fizzbuzz_gen():
for f, b in zip( mod_gen(3, “Fizz”)
, mod_gen(5, “Buzz”)
):
yield

元記事を表示

ChatGPTがえぐいっていう話

# ChatGPTって?
OpenAIが提供しているチャットでやりとりする形のサービスです.
こいつがすごい.その辺の人間よりよっぽど賢いです.

自分はAIが人間にとって代わるなんてまだまだ先派だったんですが,ChatGPT見ると…アレ??って感じです?

研究等自分で触っているAIではデータが少なく,できることが限られているというのも1つあるんですよね.
ChatGPTはえぐい量のデータを学習させているので,えぐいことができています.

いやぁ…えぐいよ…?

Googleアカウントとかで誰でも無料で使えます.Wow
[ChatGPT: Optimizing Language Models for Dialogue](https://openai.com/blog/chatgpt/)

# やばすぎる記事たち
TwitterでもChatGPTの記事ばかり流れてきます.
大学入試等の試験も軒並み合格ラインを出しているらしいです.(難関大ですよ
…俺より優秀じゃんね(´;ω;`)

– [米医師試験で合格ライン](https://news.yahoo.co.jp/articles/4

元記事を表示

陸上 100m 走の記録をいろいろな回帰モデルで学習し、未来の記録を予測する

# 概要

陸上競技の男子 100m 走の歴代3900 傑のリストを使って、回帰分析を行いたいと思います。いろいろな回帰モデルを使って分析を進め、決定係数 R2 で比較していきます。さらに、2030 年と 2050 年にどれくらいの記録が出るのかを、それぞれのモデルを使って予想していきます。それぞれのモデルがどのくらいの記録を予想するのか興味が惹かれます。

# 環境
– M2 Mac
– JupyterLab 3.3.2
– Python 3.9.12
– Numpy 1.21.5
– Pandas 1.4.2
– Matplotlib 3.5.1
– Scikit-learn 1.0.2

# 分析
## 1. Data 前処理
### 1) 100m Excel Data の読み込み
最初に陸上競技の男子 100m 走の歴代3900 傑のリストの Excel ファイルを読み込みます。100m の歴代リストは下記のサイトから取得しました。

Data 出典 : http://www.alltime-athletics.com/men.htm

“`
import pandas

元記事を表示

Python 初学者が買い物リスト作成アプリを作った(データ加工編)

**この記事は以下の続きです**

https://qiita.com/yuuauuy1/items/3a442f40f2ba77552f0b

今回は楽天レシピから取得した「材料」と「量」のデータを加工していきます。

買い物リスト作成アプリの機能として、
・同じ材料名の**量を足す**(玉ねぎ:1玉 + 玉ねぎ:1/2玉 = 玉ねぎ:3/2玉 みたいな)
・ユーザーが欲しい人数分の量に**変換**する(1人前:玉ねぎ:1/2玉 → 3人前:玉ねぎ:3/2玉 みたいな)
というところを実装したいです。

これがやり易いようにデータを加工していきます。

**買い物リスト作成アプリの概要はこちら**

https://qiita.com/yuuauuy1/items/5bb4a53ab15bde354297

**★このページは以下項目で構成されています★**

| 項番 | ページ内リンク |
|:—-:|:————-|
| 1 | [目指すデータ型](#目指すデータ型) |
| 2 | [やること](#やること) |
| 3 | [記号を消す・文字を変換する]

元記事を表示

Django初学者のざっくり理解

# RenderとRedirect
 Djangoの勉強をしていて、`Render`と`Redirect`がこんがらがったので整理のためにまとめます。

# Render
## Renderの記述
 まずはRenderの記述から見ていきます。
“`python:Render
def hoge_view(request):
object_list = Model.objects.all()
return render(request, ‘hoge/hoge.html’, {‘object_list’ : object_list})
“`
 まず、renderはviewの中で使われています。引数は前から順に、`リクエスト`、`テンプレート`、`データ`です。前2つは、[前回記事](https://qiita.com/devagar/items/919cdf77b7dccd852f2f)を参照してください。
 今回の記述において、データは`モデル`の情報を使っています。モデルのすべてのオブジェクトを取得して、キーと値の組み合わせで利用しています。

## Renderの動

元記事を表示

Python 初学者が買い物リスト作成アプリを作った(データ収集編:3)

**この記事は以下の続きです**

https://qiita.com/yuuauuy1/items/c7b544eda29f90ee12e5

今回は、こちらの表のURLを使って各レシピの材料と量を取得していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983287/8a8552e1-dce6-d661-b891-36066cbec841.png)

作りたい表はこちら(どのようなデータ型にしたいか考えるの大切!)
二つの表のindexは対応しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983287/6ac2fc6f-90f6-d55f-035f-407b24631297.png)

**買い物リスト作成アプリの概要はこちら**

https://qiita.com/yuuauuy1/items/5bb4a53ab15bde354297

**★このページは以

元記事を表示

【Python】自作モジュールのimport時にパスが通らない問題を解決

## 環境
Python 3.8.10

## 初めに
研究で自作モジュールのimportが上手くいかなった時の記録をメモ。
ディレクトリ構成は以下。

![スクリーンショット 2023-02-10 16.41.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3131671/f450bb0f-50bc-0eed-c869-1bbaf053baac.png)

## 先に結論
自作モジュール自体が他の自作モジュールをimportする場合、実行したいファイルにおいて、利用する全ての自作モジュールのパス(実行したいファイルからの相対パス)を通す必要がある。

反対に、他の自作モジュールをimportしている自作モジュールでは、パスを通す必要はない。

## パスが通らない様子
再掲
![スクリーンショット 2023-02-10 16.41.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3131671/f450bb

元記事を表示

python zip(), set() の挙動を調べた

最近[LeetCode](https://leetcode.com/problemset/algorithms/)にハマっておりまして、その中で得た知見を備忘的に残していこうと思います。
# zip()の挙動

“`main.py
strs = [“flower”,”flow”,”flight”]

for a in zip(strs):
print(a)

# 出力
# (‘flower’,)
# (‘flow’,)
# (‘flight’,)
“`

zip(*strs)とした場合
“`main.py
strs = [“flower”,”flow”,”flight”]

for a in zip(*strs):
print(a)

# 出力
# (‘f’, ‘f’, ‘f’)
# (‘l’, ‘l’, ‘l’)
# (‘o’, ‘o’, ‘i’)
# (‘w’, ‘w’, ‘g’)
“`
このアスタリスク何?となった場合[「こちら」](https://qiita.com/LouiS0616/items/1bbe0a9bb93054f6c380)が参考になった。

元記事を表示

Pythonの依存パッケージとダウンロード先URL一覧をゲットする方法

# はじめに

仕事で Python パッケージの依存パッケージ一覧と、そのパッケージのダウンロード先URL一覧が必要になったのですが、取り出す方法がなかなか見つからなかったので、(もっといい方法がありそうですが…) 方法をメモします。

例として Python 3.8 の pandas の場合、依存パッケージは下記で

“`
numpy==1.24.2
pandas==1.5.3
python-dateutil==2.8.2
pytz==2022.7.1
six==1.16.0
“`

ダウンロード先は下のようになりました。

“`
https://files.pythonhosted.org/packages/bf/8c/3d36cef521739bd481e9a5b30e5c0f9faf8b7fe7b904238368908a9d149d/numpy-1.24.2-cp38-cp38-win_amd64.whl
https://files.pythonhosted.org/packages/ca/4e/d18db7d5ff9d28264cd2a7e2499b870110

元記事を表示

Pythonでの音声信号処理 (9) 波の解析の一歩の疑問点

## 今回のテーマ
「(8) 波の解析の一歩」を踏まえて、しっくりこない疑問点を整理する。

疑問点
1. sin波が横にズレたような場合に、解析結果が変にならないか
2. そもそも周期が分からないときはどうすればいいか

順番に検証する。

### 「sin波が横にズレる」場合
「sin波が横にズレる」とは、つまり、
![p9_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850619/289b5f24-4507-fca2-cd8f-d099820f460c.png)
のように、dだけズレたような場合でも、きちんと周波数成分を抽出できるのかということ。

dだけズレたsin波の式を加法定理を使って展開すると、

![p9_2_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850619/99562e23-b693-9588-7fae-99abeb51798f.png)

という感じになる。つまり、同じ周波数の

元記事を表示

初心者がDjangoを勉強したのでざっくりとアウトプットします

# Djangoとは
 Djangoとはウェブアプリケーションを作る手助けをしてくれるフレームワークのことです。Djangoを用いることで、より安全に、より効率的にウェブサイトを作成することができます。
 一般的なウェブサイトではブラウザから表示したいURLをサーバーにリクエストし、サーバーはそれに対応するファイルをブラウザにレスポンスとして返します。
 一方、Djangoではリクエストを受け取ったあとサーバー内で処理を行った後に、レスポンスを返します。これにより、使うデータを指定できたり、見た目を変更したりすることができます。要するに、より便利なサイトを提供することが可能になるということです。

# Djangoの構成
Djangoは以下の3つから構成されています。

– Controller
`Model`に使うデータを指示したり、`View`に使うテンプレートを指示する。

– Model
`View`にデータを受け渡す。

– View
テンプレートとデータを組み合わせた情報を`Controller`に渡す。
 
以下、それぞれを実際にどう使うかを説明します。

## Co

元記事を表示

ffmpegの処理をtkinterでGUI化(その3: キャンセルボタン)

[その1: プログレスバーとリアルタイム出力表示](https://qiita.com/ytakeda-paleo/items/c3d33aef9d1c715702de)
[その2: コンソール風出力表示](https://qiita.com/ytakeda-paleo/items/c93ef9e1776414a0b263)
の続きです.

# やりたいこととGUIの内容
– 処理を中止するキャンセルボタンをつける.
– 完成したもの↓
![Animation2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736226/76fe7548-a415-b1ef-00b0-697e3bcd15b7.gif)

## 環境
Windows 10 Pro, Python 3.7, miniconda(conda 4.11.0)

# コード
“`python
import os, subprocess
import tkinter as tk
from tkinter import ttk, message

元記事を表示

OTHERカテゴリの最新記事