カテゴリー
D-Studio プログラム

ヤフオク特定ページのスクレイピング

Yahoo!オークションの特定の商品の監視を行いたい時に使えるのがこれ。まぁ普通に通知機能とかついてるから使い道はあるのかどうかわかりませんが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooAuctionのサイト監視で情報取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 監視したいオークションサイト
    load_url = "https://page.auctions.yahoo.co.jp/jp/auction/v**********"

    load_url = load_url
    web_data = None

    try:
        # HTML取得
        html = requests.get(load_url)
        web_data = BeautifulSoup(html.content, "html.parser")
        #print(web_data)
    except:
        print("[ERROR] Check input URL.")
        exit()

    item_list = []
    setlist = []
    ave_value = 0

    title = web_data.find_all(class_="ProductTitle__text")
    if len(title) == 0:
        print("[ERROR] Check input URL.")
        exit()

    print(title[0].text)

    now_value = ""
    sokketsu = ""

    for i in web_data.find_all(class_="Price__borderBox"):
        kakaku = i.find(class_="Price__title")
        if kakaku.text.replace(" ","") == "現在価格":
            now_value = i.find(class_="Price__value").text.replace(" ","").replace("\n","")
        elif kakaku.text.replace(" ","") == "即決価格":
            sokketsu = i.find(class_="Price__value").text.replace(" ","").replace("\n","")

    print("現在価格:",now_value, "即決価格:", sokketsu)


    cnt = 0
    for i in web_data.find_all(class_="ProductDetail__item"):
        print(i.text.replace("\n",""))

即決価格と現在価格の部分が少しややこしいですが、別の部分にあるのでこんな取り方になってます。

最高入札者情報はログインしないと見れないらしいです。

変化あればログに保存してそれをグラフで表示したり出来ると面白そうですね〜

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…

  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…

  • note

    note始めました!D-Studioにアップしていきます! まずはLabVIEW×Pythonという超ニッチな…

カテゴリー
D-Studio プログラム

ヤフオクのスクレイピング

Pythonは便利ですな!

Yahoo!オークションのスクレイピング。検索結果のタイトルと価格情報を表示。50件表示のみですが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooAuctionの買い物一覧は取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    load_url = "https://auctions.yahoo.co.jp/search/search?p="
    item = "タフト 6BA-LA900S"

    load_url = load_url + item

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    #print(web_data)

    item_list = []
    setlist = []
    ave_value = 0

    cnt = 0
    for i in web_data.find_all(class_="Product"):
        label = i.find(class_="Product__title")
        value = i.find(class_="Product__price")
        #print(i)
        setlist = []
        setlist.append(str(cnt))
        setlist.append(str(label.text))
        setlist.append(str(value.text))

        print(str(cnt) + ":" + str(label.text) + str(value.text))
        item_list.append(setlist)
        cnt = cnt + 1

ヤフオクに関しては結構検索したら色々出てくると思います。

今回はYahoo!ショッピングと同じ様なやり方です。

こちらでは詳しくやってます!

ヤフオクのスクレイピング

,
  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…

  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…

  • note

    note始めました!D-Studioにアップしていきます! まずはLabVIEW×Pythonという超ニッチな…

カテゴリー
D-Studio プログラム

Yahooショッピングスクレイピング

Yahooショッピングのスクレイピングをやってました!1ページ目30件のみしか取れませんが、結構ちゃんと内容取れますね!Class名は調べないといけませんが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooShoppingの買い物一覧は取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 30件取得
    # 並び替えはX=9(評価順)
    load_url = "https://shopping.yahoo.co.jp/"
    search_op = "search?first=1&ss_first=1&ts=1636337247&mcr=8e2a556b12cfc76cfbdc9b34f3a2d87f&sretry=0&X=9&area=28&astk=&aq=&oq=&p="
    item = "本革 長財布"

    load_url = load_url + search_op + item

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    #print(web_data)

    item_list = []
    setlist = []
    ave_value = 0

    cnt = 0
    for i in web_data.find_all(class_="LoopList__item"):
        label = i.find(class_="_2EW-04-9Eayr")
        value = i.find(class_="_3-CgJZLU91dR")
        setlist = []
        setlist.append(str(cnt))
        setlist.append(str(label.text))
        setlist.append(str(value.text))

        print(str(cnt) + ":" + str(label.text) + "  ■価格 ¥" + str(value.text))
        ave_value = ave_value + int(value.text.replace(",", ""))
        item_list.append(setlist)
        cnt = cnt + 1

    ave = ave_value/(cnt+1)
    print("平均価格:" + str(ave))

    # 文字コードをShift_JISに指定
    with open("item_list.csv", "w", encoding="Shift_jis") as f:
        # writerオブジェクトの作成 改行記号で行を区切る
        writer = csv.writer(f, lineterminator="\n")
        # csvファイルに書き込み
        writer.writerows(item_list)



検索文字に対して30件のタイトルと価格が一覧でCSVに吐き出されます。

for文内の[class=]部分を変えることで様々な情報が取得できます。

calssの内容などは「print(web_data)」で出した結果を解析する必要ありです。

参考サイト:https://yonesuke0716.hatenablog.com/entry/2020/02/11/173408

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…


  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…


  • TIFヘッダ編集

    久しぶりの投稿はPythonプログラム! D-Studioでは現在Pythonをメインに仕事してます! 研究施…


  • 最近のお仕事

    WEBシステム開発サポート(大手企業向け) ロゴデザイン(結婚相談所) HP更新・作成(企業子会社・研究チーム…


  • 仕事紹介

    今進行中のお仕事紹介! パルスモーターでステージを動かしながら、荷重値を取得することを制御するプログラム開発中…


  • ヤフオク特定ページのスクレイピング

    Yahoo!オークションの特定の商品の監視を行いたい時に使えるのがこれ。まぁ普通に通知機能とかついてるから使い…


カテゴリー
D-Studio プログラム

C言語:charからLPCWSTR

仕事中にはまったのでメモ程度に残しておく!

状況としては、VSのC++MFC環境で作られたDLL(SDK)を利用したプログラムを作成するにあたって、利用する関数の引数の型がLPCWSTRというもの。こちら側で作成した外側のプログラムで取得するのがchar型。変換が必要だが????

参考ページ

char dataBuff[] = alphabet0123カタカナひらがな漢字;
wchar_t pwsz[sizeof(dataBuff)*2];
MultiByteToWideChar(CP_ACP, 0, dataBuff, strlen(dataBuff), pwsz, sizeof
(pwsz));
LPCWSTR Data = pwsz;

これだけです!いろいろ調べてもなかなか答えにたどり着かず苦労しました!

マルチバイトとかユニコードとかMFCとか_Tマクロとか・・・

カテゴリー
D-Studio プログラム

PyQT・Plot表示

PythonでPyQtを使ったGUI開発。

Plot画面の表示について簡潔にまとめておきます。

class ScanGUI(QWidget):
~
    def initUI(self):

        # グラフ領域
        self.pw = PlotWidget(self)
        # グラフのデータ設定(初期値)
        self.vol_array = np.zeros(10)
        self.cnt_array = np.zeros(10)
        # pyqtgraphにPlot種類とデータを追加
        self.item = pyqtgraph.PlotCurveItem(x=self.cnt_array, y=self.vol_array)
        self.pw.addItem(self.item)
~

ここまではググったらいくらでも出てくるので簡単にグラフ表示はできると思います。今回はグラフをリアルタイムに更新したいのです!

self.pw.addItem(self.item)を繰り返すと?グラフが上書きされます。グチャグチャになります。

            # グラフ更新
            self.item.updateData(x=self.cnt_array, y=self.vol_array)

更新時はこれだけ。updateDataを使います。これでグラフは更新されます。

Plotの基本についてはこちらとか参照。

Pythonの記事も結構ありますので興味ある方はぜひ!

カテゴリー
D-Studio プログラム

業務紹介

現在進行中の業務紹介!

[LiveView GUI開発]

LiveView
言語:Python
環境:Windows10
特殊なカメラが出力するTIFフォーマットの画像を解析するためのGUIを作成しています。静止画はもちろん、更新される画像ファイルをリアルタイムに表示するLiveViewモードも実装しています。
画像回転、LUT対応、カラーチャート対応などの機能を実装しています。

[Scan GUI開発]

言語:Python
環境:Windows10
軸を移動しながら、決まった単位でデータを取得して行き、変化の様子を確認するためのGUIです。ハードの部分は簡易シミュレータを作成して動作確認を実施。
ユーザーがどう考えるかを検討しながら機能を追加。まだ開発途中ですがいい感じに動作しております。


このように最近はPythonによるGUI開発を主に作業しております。画像解析関連、ハード連携によるデータ解析ソフトの開発を得意としており、今回はPythonで本格的に作成してますが、Windows上でしか動かさないならC#でも作成可能です。

2021/10月現在、ソフト開発としてはかなりリーズナブルな価格で請け負っております。

会社概要 お問い合わせ

カテゴリー
D-Studio ドリブルTシャツ

ダブルタッチ 縦 秋

パーカー

ダブルタッチデザインのパーカーとか!

SUZURIで絶賛発売中です!

ダサ可愛いを狙ってみましたがどうでしょう?

ビッグシルエット長袖Tシャツ

ビッグシルエットのロンTもいい感じです!

気になる方はSUZURIをチェックしてください!

ダブルタッチといえば?は過去のブログでやってますが、子供向けの練習動画も公開中です!

低学年でもできる基本技ですが奥は深いです!

ダブルタッチからの派生技(格闘ゲームのコンボみたいな感じw)が色々できるので万能ですね!

ドリブルTシャツページはこちら

カテゴリー
D-Studio プログラム

pyQtでGUI上画像表示

PythonのGUI開発においての覚書

GUIで画像表示を行う場合のあれこれ

#!/usr/bin/python3
# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import QMainWindow, QLabel


class ImgView(QMainWindow):

	def __init__(self):
		super().__init__()
		self.initUI()

	def initUI(self):
		# 画像表示領域 ラベルを作ってその中に画像を置く
		self.lbl_image = QLabel(self)
		self.lbl_image.move(pos_x, pos_y)
		self.lbl_image.setFixedWidth(width)
		self.lbl_image.setFixedHeight(height)

        def viewevent(self):
                #Pixmapフォーマットの画像を表示させる
                self.lbl_image.setPixmap(pix)
</code></pre>
<!-- /wp:code -->

[解説]

・表示部分はQLabelを利用

・表示させるのはPixmapの画像

要はPixmapファイルが作れれば結構簡単に画像表示できます!

なのでpillowで取得した画像データをpixmapへ変換する場合は下記の様に。

from PyQt5 import QtGui

from PIL import Image, ImageOps    

def change_pil_to_pixmap(self, pilimg):
        rgb_im = pilimg.convert('RGBA')
        data = rgb_im.tobytes("raw", "RGBA")
        qim = QtGui.QImage(data, rgb_im.size[0], rgb_im.size[1], QtGui.QImage.Format_ARGB32)
        pix_img = QtGui.QPixmap.fromImage(qim)
        return pix_img

画像データ取得については下記参考

 外部リンク

pillowのフォーマットで色々画像処理できます。

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…


  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…


  • TIFヘッダ編集

    久しぶりの投稿はPythonプログラム! D-Studioでは現在Pythonをメインに仕事してます! 研究施…


カテゴリー
D-Studio プログラム

画像リサイズ

Pythonで画像一括リサイズ!

今回は縦長や横長の画像を正方形にリサイズ。余白部分はそのサイズの白色画像を合成。

画像サイズ指定された時に一気に変更かけられうので便利!

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


import glob
import os.path
import cv2
from PIL import Image


#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    #
    path = "/画像置いてるパス/*"
    bgpath = "/白色正方形画像/bg.png"

    # リサイズしたい長い辺のサイズ
    re_length = 1024


    files = glob.glob(path)
    cnt = 1
    for file in files:
        # 拡張子取得
        root, ext = os.path.splitext(file)
        # .jpegだけ表示
        if ext == ".jpeg":
            #name = str(cnt).zfill(4)
            name = basename_without_ext = os.path.splitext(os.path.basename(file))[0]
            path = path.rstrip("*")

            img2 = cv2.imread(file)
            h, w = img2.shape[:2]

            # 変換する倍率を計算
            re_h = re_w = re_length / max(h, w)

            # アスペクト比を固定して画像を変換
            img_res = cv2.resize(img2, dsize=None, fx=re_h, fy=re_w)
            h2, w2 = img_res.shape[:2]

            # 1024x1024の正方形の画像にまとめる。余白は白色
            img1 = img_res
            img_base = cv2.imread(bgpath)

            height, width = img1.shape[:2]
            if height == re_length:
                img_base[0:height, int((re_length-width)/2):width + int((re_length-width)/2)] = img1
            else:
                img_base[int((re_length-height)/2):height + int((re_length-height)/2), 0:width] = img1

            out_dir = path + "resize/"
            if not os.path.exists(out_dir):
                # ディレクトリが存在しない場合、ディレクトリを作成する
                os.makedirs(out_dir)

            cv2.imwrite(out_dir + name+".jpeg", img_base)

        cnt = cnt + 1

今回はCV2を利用してます。

JPGとかPNGはこれで簡単にいけます。

リサイズ時の余白用白色画像は適当に用意してリサイズして利用するのも可能。(今回は1024×1024用意してます)

カテゴリー
D-Studio WEB広告

広告結果

今回TシャツサイトをFacebook広告でInstagramへの表示を実施しました。Instagramから広告出そうとしたらエラーになるので。謎。

2000円でリンククリック14人。約150円で1人クリックしてくれる感じです。
以前は1500円で5人だったので改善はしている。
ターゲティングなどはほとんど変えてないので、記事の内容だけで2倍のクリック率になった模様。
ちなみにいいね!は1098件。

▶︎さて売り上げにつなげるには?
おそらく広告+インフルエンサーに頼むがベスト。
後UTmeはデザイン性は高いが値段も高い!
BASEのTシャツはデザイン性が低い(画像の見た目が悪い)
他に似たようなサービスが増えてきてるので展開してみるのもありか?