Python3関連のことを調べてみた2020年06月08日

Python3関連のことを調べてみた2020年06月08日

Seleniumで指定座標をクリックさせる

動的なウェブサイトなどで、タグを追いかけられないときにどうぞ。
[helium](https://github.com/mherrmann/selenium-python-helium)を使うともっと楽なんですが、Anacondaで提供されていないようなので、自作してみました。

最後の`actions.perform()`を書き忘れて、「動かない。指定するタグが悪いのか?」って結構悩みました。

“`python
def click_by_position(driver, x, y):
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)

# MOVE TO TOP_LEFT (move_to_element will guide you to the CENTER of the element)
parent = driver.find_element_by_tag_name(“html”)
actio

元記事を表示

Numpyで日本国旗をパラオ国旗にしたい

#はじめに

日本国旗をパラオ国旗にするために,numpyで簡単な画像処理を行いました.

#日本国旗とは

>**日本の国旗-Wikipedia**
日本の国旗(にっぽんのこっき、にほんのこっき)は、法律上は日章旗(にっしょうき)と呼ばれ、日本では古くから、一般的に日の丸(ひのまる)と呼ばれる旗である。

– 縦横比 2:3
– 円の直径 縦の3/5
– 円の位置 国旗の中心

※1999年に公布・施行された「国旗及び国歌に関する法律」に定められたもの

#パラオ国旗とは

>**パラオの国旗-Wikipedia**
パラオ共和国(Beluu er a Belau)の国旗は、中央のやや旗竿寄りに黄色の円を配し、明るい青を背景色とした旗である。

– 縦横比 5:8
– 円の位置 中心から旗竿よりに1/10ずれる

※円の直径は詳しい数字が分からなかったので日本国旗の円を使いました.

#コード

“`kokki.py
import cv2
import numpy as np

img = cv2.imread(“./test/japan.png”).astype(np.float

元記事を表示

Python3 での末尾再帰最適化

# 結論

[Pythonのクロージャで末尾再帰最適化をする。 – tanihito’s blog](http://tanihito.hatenablog.com/entry/20110119/1295459297)
[Pythonで末尾再帰する – Blanktar](https://blanktar.jp/blog/2013/06/python-tail-recurusion)

上記を参考に Python3 で書き直してみる。

“`python:tail_recursion.py
from functools import wraps

def tail_recursion(func):
firstcall = True
params = ((), {})
result = func

@wraps(func)
def wrapper(*args, **kwd):
nonlocal firstcall, params, result
params = args, kwd
if firstcall:
firstcall =

元記事を表示

全探索の問題

#全探索を復習
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】](https://qiita.com/e869120/items/f1c6f98364d1443148b3#1-6-4-%E5%85%A8%E6%8E%A2%E7%B4%A2%E3%81%AB%E6%85%A3%E3%82%8C%E3%82%8B)

プログラミングコンテストチャレンジブックと並行して上記の記事を学習していきます。
モチベーションの維持の目的です。
プログラミングコンテストチャレンジブックは難しい。

そしてたまには解かないと忘れてしまいます。

##全探索の問題
###[B – 81](https://atcoder.jp/contests/abc144/tasks/abc144_b)

“`python:python
from math import floor
from decimal import Decimal

N = int(input())

for i in range(1, 10):
for j in range(1, 10):

元記事を表示

PythonでJSONファイルを作成する方法

## はじめに
Pythonのjsonモジュールでは、JSONファイルを読み込んだり、JSON形式のオブジェクトを書き込むことはできるが、JSONファイルを作成することはできない。JSONファイル作成を、必要に迫られ実装したので、メモとして残しておく。

公式ドキュメントより
https://docs.python.org/ja/3/library/json.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489653/6d11c838-e4a5-bd6c-c70f-e07f62173eba.png)

## 実装方針
– 書き込みたいJSONファイルが空なら [ を挿入する
– JSON形式のオブジェクトを挿入する
– 末尾に ] を挿入する
– 次に挿入するとき、末尾が ] なら , に置き換える

## 実装例
以下の3ファイルは同階層にあるものとする

“`python:json_make.py
import json
from pathlib import Path

元記事を表示

【FX】Dockerを使ってPythonでoanda-APIを叩く

## 概要
FXの取引といえば基本手作業でぽちぽちやるものだ。
これをPythonを使ってプログラミングで自動で決済したりできると凄い楽しいことになる。
機械学習を用いて未来の価格を予測したり、決められた時間や決められたロジックで自動売買の設定だってできる。
ここではそのための最初の一歩として、 Dockerからapiを叩いてPythonを使った決済ができるようになる を目標とする。

## 前提となる環境
– oandaに口座(デモ口座でもよし)を作り、APIのtokenを発行する
– docker, docker-composeを使える環境

##oandaの設定
Pythonなどのプログラミング言語を用いてFXの売買をするためにはAPIを叩かなければいけない。
SBI証券とかDMMFXなどFXをできる業者はいっぱいあるが、国内でFX用のAPIを提供しているところはoandaくらいなので、まずはoandaで口座を作る。
バグとかがあったら大変なので、最初はデモ口座でいいだろう。15分くらいあればちゃちゃっとできる。
oanda APIを使ったFXの取引についてはQiitaだと以

元記事を表示

ABCモジュールを使った抽象基底クラスを作る方法

#抽象基底クラスとは
抽象基底クラスはクラスの一つで、通常のクラスとは違い次のような特徴を持ちます。

・インスタンスを持たない (インスタンスを作ろうとするとエラーを吐きます)
・継承をすることによって使用する

抽象基底クラスの関数(メソッド)を**仮想関数**といいます。
抽象基底クラス(親クラス)に存在するメソッドは、サブクラス(子クラス)でも**用意しなければなりません**。

メリットの関しては[こちらのQiitaの記事](https://qiita.com/bluepost59/items/eef6f48fdd322b0b9791)の方が詳しく説明してくれているので、是非ご覧ください

#必要なもの
・**クラスと継承の知識**
・**Pythonの実行環境**

#ABCモジュールを使用した抽象基底クラスの作成
“`Python:Actor.py
from abc import ABCMeta, abstractmethod, ABC

class Actor(metaclass=ABCMeta):

@abstractmethod
def __i

元記事を表示

Jupyter Notebookの起動時のディレクトリを変更する

# はじめに

jupyter notebook起動時のフォルダはデフォルトだとユーザーディレクトリになっていて余計なディレクトリも表示されてしまい色々と不便でした。
そこでjupyter notebook用のフォルダを新しく作り、それを起動時のディレクトリに変更したので、その時にやったことを備忘録としてまとめました。
configファイルを作成して変更する方法もあるようですが、私の環境では上手くいきませんでした。

# 動作環境

– Windows10
– conda 4.8.3
– Jupyter Notebook 6.0.3
– chrome

# 方法

Jupyter Notebookのショートカットのプロパティを変更します。

## 1. Jupyter Notebookのショートカットがあるディレクトリを開く

0. `Windowsキー`を押してスタートメニューを開く
1. `Anaconda3`をクリックして`Jupyter Notebook`を左クリック
2. `その他`>`ファイルの場所を開く`を選択

![image.png](https://qiita-im

元記事を表示

Gmailの複数アカウント対策

# 概要

gmailの特殊な仕様と複数アカウント対策をまとめます。

# 前提知識

WEBメールの仕様として、メールアドレス以下のような構成になっています。

“`
ユーザー名@ホスト名
“`

# gmailの仕様

以下のメールアドレス送信したメールは、gmailの仕様により**`example@gamil.com`**に届きます。

– 1) ユーザー名の大文字小文字は区別されない

**`EXAMPLE@gmail.com`**

– 2) ユーザー名のエイリアスが使える(+から後ろ)

**`example+qiita@gmail.com`**

– 3) ドットは無視される

**`ex.am.ple@gamil.com`**

– 4) ホスト名は、”gmail.com” “googlemail.com”はどちらも使える

**`example@googlemail.com`**

– 要するに

こんなメールアドレスでも送信先は同じです

**`E.x.A.m.P.l.E+qiita@googlemail.com`**

# 問題点

どんなメールアドレスでも登

元記事を表示

Python3 venvによる環境構築

venvによる環境構築メモ

## 環境を作成

`python3 -m venv ./path/to/env`

## Activate(環境を有効化)
`. ./path/to/env/bin/activate`

## Deactivate(環境を無効化)
`deactivate`

## インストールされているパッケージを確認(pip)
`pip freeze`

## 環境を削除
`python -m venv –clear ./path/to/env`

元記事を表示

製薬企業研究者がPythonを用いたウェブスクレイピングについてまとめてみた

# はじめに

ここでは、Pythonを用いたウェブスクレイピングについて解説します。

# BeautifulSoup

以下のHTMLファイルを表示するウェブページに対してクローリング、スクレイピングを行うとします。

“`html

“`

Pythonスクリプトは以下のようになります。

“`python
import requests
from bs4 import BeautifulSoup

url = HTMLを取得するURL
response = requests.get(url)
response.encoding = response.apparent_encoding

bs

元記事を表示

Laravelに似ているPythonのWEBフレームワークMasoniteの環境をDockerで作ってみた!

## 目的
Laravelに似たPythonのWEBフレームワークMasoniteの動作環境をDockerを利用して作成する事で、共同開発で使えるようにしました。

## 動作環境
Mac: Catalina10.15.5
Docker: 19.03.8

## 環境構築方法と起動方法
作業ディレクトリに以下の内容のDockerfileとdataディレクトリを作成する。

“`
FROM ubuntu:latest

COPY ./requirements.txt /opt

RUN apt-get update && apt-get -y upgrade && \
apt-get install tzdata language-pack-ja gcc libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 wget -y && \
wget -P /opt https://repo.continuu

元記事を表示

pandas勉強 その1(自己学習用)

分析のためにpythonを習得しているので、具体的な集計・分析手法や前処理の方法を学んできたが
ここらでよく使うpandasについてちゃんと勉強してみよう、と思いメモ。
知っている人には当たり前なんだろうけど、どこかふわふわした理解のままではスッキリしないので。

参考文献はこちら
[Pythonによるデータ分析入門](https://www.amazon.co.jp/dp/487311845X)

参考文献を見ながら、自分の手でコード書いて実行。
重要な箇所を見て気付いたことを少し書く、というスタイルですので無駄に長いです。。。
※引用箇所が参考文献の本文です。

## シリーズ(Series)
よく出てきて混乱を起こしたやつ。わかったようなわからないような。
Numpyのarrayとの違いがよくわからなかった。

### インデックスについて
>シリーズは1次元の配列のようなオブジェクトです
>連続した値と、それに関連付けられた**インデックス**というデータラベルの配列が含まれます

おお、なるほど。知らなかった、インデックスがセットになってくるのが大事なのか。

“`Pyt

元記事を表示

Python初心者の為のエラーとの戦い方

# はじめに

 書籍を使って独学でプログラミングを学び始めた際、エラー処理に苦しみ挫折しかけました。
 何が分からないのか、分からない状態に陥り少しトラウマだったりします笑

 なので、~~当時の自分への供養も兼ねて~~同じような初学者の力になるため記事にしました。

## 対象 

 ・プログラミング経験,知識がほぼないという方
 ・まだ専門用語がよくわからない方
 ・言われた通りに記述してるのになんで動かねぇんだ!という方

## ゴール

 ・何を直せばいいのか理解できるようになる

#  エラーの例

 意図的にエラーを出すため、[plotly](https://plotly.com/python/)というライブラリをインポートしてみます。

“`python:filename.rb
import plotly.express as px
“`

###  エラーメッセージ

すると、このようなメッセージが出ます。

ModuleNotFoundError Traceback (most recent call last) < ipython-input-6-8

元記事を表示

PythonでHTTPキャッシュを使う

クローラー作成の時には、繰り返しの実行を念頭におくと思います。
そこで、クローラー先にサイトのキャッシュが気になります。

キャッシュがかかった状態で再度、実行しても同じページをみていて取得できるデータが同じです。

今回は、PythonにおけるHTTPキャッシュについてまとめたいと思います。

## HTTPキャッシュ
HTTPキャッシュは、[RFC7234](https://triple-underscore.github.io/RFC7234-ja.html)で定められている。
HTTPサーバはレスポンスにキャッシュに関するヘッダーをつけることで、HTTPクライアントに足しいてコンテンツのキャッシュ方針を指示できる。

| HTTPヘッダー | Right align |
|:—————–|:——————|
|Cache-Control | コンテンツをキャッシュしても良いかなど、キャッシュ方針を細かく指示する |
|Expires | コンテンツの有効期限を示す |
|Etag

元記事を表示

docker-composeでサクッとpython環境を

# はじめに
ちょっとpythonコンパイルしたいけど、macの環境はデフォルトの場合インストールはめんどいよね。コンテナで環境作っちゃおう。

# 完成品

“`docker-compose.yml
version: “3”
services:
py38:
image: python:3.8
container_name: py38
volumes:
– ./code:/code
working_dir: /code
tty: true
“`

## 下準備

“`
# 適当にディレクトリ作って
$ mkdir py38 && cd py38
# docker-compose ファイル作成して
$ touch docker-compose.yml
# 上のコードをコピペ
“`

## 動かし方

“`
# ビルドしながら動かす
$ docker-compose up -d –build
# コンテナへの入り方
$ docker exec -it py38 bash
# コンテナからの出かた
$ exit
# コンテ

元記事を表示

Pythonでクローラーを開発するときに気をつけること

## クローラーの特性
### 状態を持つクローラー
HTTPはステートレスに設計されたプロトコルです
状態を持ちたい時は、Cookieを使います。
必ずしも、クローラー作成で、Cookieの送受信を実装する必要もない。RequestライブラリのSessionオブジェクトを使う。
また、Refererでも状態を表すことができる。

ログインの実装などに使う。

### JavaScriptを解釈するクローラー
SPAなどは、HTMLにコンテンツを含まれていない。その場合h、JavaScriptを解釈する必要がある。

– [Selenium](https://www.selenium.dev/) (プログラムからブラウザークォ自動操作するツール)
– [Puppeteer](https://github.com/puppeteer/puppeteer) (Google Chromeを自動操作するためのNode.jsのライブラリ)

などが自動操作ツールとしてあります。

### 不特定多数のWebサイトを対象とするクローラー
Google botなど

この3つの特性があるが、どのパタ

元記事を表示

PythonでRSSのスクレイピングする

## lxml.etreeモジュールを使う
[公式](https://lxml.de/tutorial.html)

“`python
import lxml.etree

#ファイルを読み込む
tree = lxml.etree.parse(‘rss2.xml’)
#getroot()メソッドでXMLのルート要素い対応する
root = tree.getroot()

#xpath()メソッドでXPathにマッチする要素をリストを取得
for item in room.xpath(‘要素を階層で指定’):
#取得したいデータを指定し、取得
“`

## feedparserを使う
RSSのフォーマットを意識せずにスクレイピングできる。RSSフィードには、RSS1.0, RSS2.0,Atomなど複数フォーマットがあって、めんどくさいので、おすすめ。

[公式](https://pythonhosted.org/feedparser/)
### Dockerのタグがついたqiitaの記事を取得

“`python
import feedparser

d = feedparse

元記事を表示

PythonのライブラリでHTMLのスクレイピングをしてみる

# Beautiful Soup
## Beautiful Soupとは
覚えやすいシンプルなAPIが特徴のスクレイピングライブラリです。

[公式](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)

“`python
from urllib.parse import urljoin
from bs4 import BeautifulSoup

#HTMLファイルを読み込む
with open(‘htmlファイル’) as f:
soup = BeautifulSoup(f, ‘html.parser’)

# 取得したい要素のリストをselectで取得する
for a in soup.select(要素)
#取得したい要素を引き出す

“`

# pyquery
## pyqueryとは
pyqueryはjQueryと同じような使い方でHTMLからスクレイピングできるライブラリ。内部的にlxmlを使用しており、高速に処理できる。

[公式](https://pythonhosted.org/pyquery/)

元記事を表示

PythonでWebページからデータを抜き出す

webページからデータを取得する方法は
[こちら](https://qiita.com/roko18366758/items/6de6b7cc8ed0a2ca8733)

## 正規表現でWebページからデータを抜き出す
標準ライブラリのreモジュールを使う。
[公式ドキュメント](https://docs.python.org/ja/3/library/re.html)

“`python
import re
from html import unescape
from urllib.parse import urljoin

# Webページからhtmlデータを取得

for partial_html in re.findall(正規表現):
# 取得した情報から、特定の情報を正規表現で取得
# 正規表現では、re.search()をする

“`

## lxmlでWebページからデータを抜き出す
### lxmlとは
C言語で書かれたXML処理の著名なライブラリであるlibxml2とlibxsltのPythonパインディング。
[公式ドキュメント](https://lxml.

元記事を表示

OTHERカテゴリの最新記事