【まず1嫁】くだすれPython(超初心者用) その54

■ このスレッドは過去ログ倉庫に格納されています
2021/06/09(水) 21:05:44.61ID:zRBfpo4e
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2021/09/07(火) 20:23:56.12ID:SoS5+Qbw
>>775
え、インストールしたパッケージ一覧が出てくるんじゃないですか?
誤情報ですかね・・・
2021/09/07(火) 20:25:59.15ID:yP3cXAjd
pip list
2021/09/07(火) 20:26:41.96ID:o/q1by9H
>>780
節子、それやりたいならpip listや
2021/09/07(火) 20:33:41.53ID:YcIWO4/P
Elixir は片方向リストで、immutable だから、
先頭への追加ではコピーされないけど、
末尾へ追加するとコピーされる

つまり、先頭のみ最適化される

だから未だに、文字列を追加していく方法が分からない
2021/09/07(火) 20:37:37.38ID:eKv4jfBm
>>776
今時はよほどループ回さんとたいして違わない
https://qiita.com/GinRickey/items/d8ed9964820313340a93
2021/09/07(火) 21:31:13.42ID:8Blsw2sW
CPythonでは最適化が入っていてO(n)になるんだけど使うなとPEP8に書いてある
https://www.python.org/dev/peps/pep-0008/#programming-recommendations

For example, do not rely on CPython's efficient implementation of in-place string concatenation
or statements in the form a += b or a = a + b. This optimization is fragile even in CPython
(it only works for some types) and isn't present at all in implementations that don't use refcounting.
In performance sensitive parts of the library, the ''.join() form should be used instead.
2021/09/07(火) 23:20:45.23ID:Cp1uuQsT
>>779
それってJavaの処理系がさぼっているだけだよねね
2021/09/08(水) 00:39:17.00ID:jISXv5nw
>>786
スレチだからあれだけど、一応はJDK11で大分改善されたぞ
(それでも+結合が一番遅いけど)
788デフォルトの名無しさん
垢版 |
2021/09/08(水) 15:36:42.18ID:sW5ieu31
>>732
>>734
大変遅くなりましたがありがとうございました
助言通りpipにします
789デフォルトの名無しさん
垢版 |
2021/09/08(水) 15:56:50.49ID:45GUJlB8
重いcondaら
2021/09/08(水) 16:50:53.30ID:B2IhbCSc
勉強するだけならcondaが便利

でも他システムと繋げにくい
2021/09/08(水) 17:27:10.26ID:tJQkvu8J
formatで
0.1未満なら "5.2%"
0.1以上〜1.0未満なら "5.1%"
みたいに、全体の桁数は固定で値によって少数点以下を調整してくれるような簡易な方法ってないですか?(%だけでなく、fなんかでも)

formatだと丸められるので、単純に
if x >= 0.1 とかはできないので、一旦formatかけてからlenで桁が溢れてないかチェックしてるんですが、もうちょっとスマートな方法が無いものかと。
2021/09/08(水) 17:42:49.27ID:s8bChe9P
単に関数作っとけばいいんでないの?
2021/09/08(水) 17:50:12.13ID:QqH5BAVe
何回か読み直したが
難解過ぎて俺には文章の意味がわからなかったよorz
794デフォルトの名無しさん
垢版 |
2021/09/08(水) 17:51:41.60ID:45GUJlB8
ruby 使ってると馬鹿になりゅよ
2021/09/08(水) 17:53:59.73ID:s8bChe9P
>0.1未満なら "5.2%"
>0.1以上〜1.0未満なら "5.1%"

ここが逆になってるんだろ?
小数点以下が0.1以上の場合は全て0.2に統一って事じゃ無いの?
そうでないとしたら俺も理解不能だわ。
2021/09/08(水) 18:59:48.32ID:XUjypBYd
condaはバックアップ取ったりcloneできるのが便利。
2021/09/08(水) 19:32:05.85ID:aHZlxj+w
master.py上に実行したいスクリプトtestxx.py(xxは数字)がたくさんあります。
os.systemで引数を渡してtestxx.pyを実行しているのですが、testxx.pyからの戻り値を受け取る場合はどうしたら良いのでしょうか。標準出力の値なら取れるみたいな記述を見ましたが、実行中にprintを多様しているため、任意の戻り値のみを取得したいです。
798791
垢版 |
2021/09/08(水) 20:04:49.50ID:tJQkvu8J
分かりにくくてすみませぬ

{x:5.2%} {x:5.1%} というformatで
xが0.1=10%、1.0=100% なので、

10%未満なら9.99% まで少数点2桁、
10%以上100%未満なら99.9% まで 少数点1桁
で表示してほしい、という意味です。
全体桁固定で少数点だけ変動するようなformatの表記、あるいはやり方は無いかなという質問です
2021/09/08(水) 20:42:07.84ID:s/O0A+9w
こんなんで
x = 12.125
f'{x:.2f}'[:4]
2021/09/09(木) 01:16:22.36ID:YDItKt7x
numpyのメソッドzerosやonesなどは引数をタプルで指定することになっていますが、リストで指定しても実行できています。
特に問題ないように見えるのですが、タプルで指定した方がいい理由などあるのでしょうか?
2021/09/09(木) 02:10:35.73ID:1BTdIMLT
タプルは普遍だけれども、リストはそうでないから成長することを想定して必要以上の領域が確保されちゃうぶん効率が悪いとかあるんじゃね?知らんけど
2021/09/09(木) 02:34:23.48ID:OKDvztcs
sequenceの操作しかしてないから実際はlistでもOKないんじゃない?
onesの説明には
> Parameters: shape: int or sequence of ints
とあるしzeros側のメンテ漏れとか
2021/09/09(木) 08:14:59.88ID:Ubp0J8aB
>>799
%だと末尾に%が付くので…
2021/09/09(木) 08:44:11.31ID:1BTdIMLT
>>803
つければいいだろ…
f'{x:.2f}'[:4] + '%'
805デフォルトの名無しさん
垢版 |
2021/09/09(木) 14:16:43.72ID:3sOE3L2f
>>797
subprocess
popen
2021/09/09(木) 14:54:22.16ID:MjE68I3R
>>798
こういう事?
x = 0.5
print(f'{x*100:.2f}'[:5]+'%')
2021/09/09(木) 16:50:44.90ID:Ur+lRPYu
これで良くない?
str_formatted = f"{val:.2%}"[:4] +"%"
2021/09/09(木) 16:58:17.08ID:MjE68I3R
>>807
それだとうまくいかんよ。

>>>val=0.5
50.0%
>>>val=1.5
150.%
2021/09/09(木) 17:03:24.41ID:s2e04Gy+
>>808
> 10%未満なら9.99% まで少数点2桁、
> 10%以上100%未満なら99.9% まで 少数点1桁
って言ってるのにわざわざ150%とか出してきてドヤるのは頭になんか障害でもあるのか?
2021/09/09(木) 17:16:30.91ID:MjE68I3R
>>809
>>798
別にドヤってないし、>>807に値を渡した結果を書いてうまくいかない旨を示しているだけだが?
俺も同じようなの試してうまくいかなかったのでうまくいかないと書いただけ。
急に絡んでキレるのは頭に障害でもあるのか?
2021/09/09(木) 17:32:52.06ID:3PF/LFW4
その>>798から引用してるんだけど…
マジでお前が読めよw
2021/09/09(木) 17:35:57.82ID:MjE68I3R
すまん。なんか勘違いしてたわw
>>807で大丈夫だな。
俺のだと、こうだわ。print(f'{x*100:.2f}'[:4]+'%')
2021/09/09(木) 18:13:06.28ID:Ur+lRPYu
100%の値を渡した時に表示がおかしくなる書き方した俺が悪かった、すまん
境界値テストをちゃんとやってなかった証拠だな、マジでごめん
(実務でも似たような事やらかすからマジで反省しとる……)
2021/09/10(金) 04:40:44.86ID:uZ6rg4vc
>>781
>>782
遅くなり申し訳ありません。ありがとうございました。
2021/09/10(金) 08:23:56.80ID:oazR15lu
質問とは趣旨違いだがコマンドラインアプリでもGUIでめプログレスバーや%進捗表示はまず回避してどうしてもって言われたら超シンプルにしろって昔言われたな。
境界値の扱いでバグりやすい。
ただ本質的なバグではないのに99.9%で完了するとか100.1%まで行くとかのバグ指摘を受けやすい。
あと業務のこと分かってない情シスが仕事してるフリするために何かレビュー指摘しようとして手をつけやすい。
(1%刻みで出力するけど10の倍数だけ太字にして目立たせろとか)
2021/09/10(金) 08:26:12.15ID:oazR15lu
もっとも最悪なのは残り時間予測だけどな。
windowsですらあと5分ですって出してから30分かかったり30秒で済んだりするくらいだからよほど単純な処理じゃないと間違える。
テキストファイルのロードみたいな単純な処理でもメモリ圧迫するような挙動だとだんだん重くなるみたいなことあるし。
2021/09/10(金) 11:45:28.24ID:NVBgm1WL
今までに作ったclassの中で一番行数が多いのってどれぐらいですか?
350行程度のclassでもちょっとわけ分からんようになってきたよ
818デフォルトの名無しさん
垢版 |
2021/09/10(金) 16:59:22.38ID:1odBdOt6
それはこのクラスにはこの系統の処理を置くよ という役割分担が上手くなくて
読むときに負荷がかかってるからだと思うぬ
2021/09/10(金) 22:42:11.14ID:VqIPySM9
Austria, Croatia, Republic of, Congo, Democratic Republic of the
上記のような文字列があってそれをリストと化したいんだけどカンマでsplitしたりすると
'Croatia, Republic of', 'Congo, Democratic Republic of the'ではなく
'Croatia', 'Republic of', 'Congo', 'Democratic Republic of the'になるけど解決方法がわからないので教えてください。c
2021/09/10(金) 23:04:37.11ID:6R6RVOqf
>>819
国名はそれそれ、Austria, Croatia, Congoで処理したいということ?
もともとのデータはリストだったの?
2021/09/10(金) 23:35:10.00ID:VqIPySM9
AustriaとCroatia, Republic ofとCongo, Democratic Republic of theの3つに分けたい
元々のデータはブラウザから手動で引っ張ってきてコピペした文字列なのでリストではないです
2021/09/10(金) 23:52:18.65ID:LLuPU2aV
機械的に処理するルールを決めることがプログラミングだよ
とりあえずコンマで分けたあと小文字単語があれば前とくっつける、とやってみたいけど
それで全部うまくいくかね
2021/09/10(金) 23:58:48.69ID:HeVTXR4t
オーバースペックだけど
英名の住所は正規化するAPIやモジュールがあるから
それつかった方が楽だし応用効くよ
2021/09/11(土) 00:22:54.56ID:ZpRElCEp
国名とそれ以外を分ける必要があるけど
別途国名のリストを拾ってきて、要素を検索しつつ仕分けすればできそう
まぁ、国名リストって時点でアンチョコ使ってるみたいですっきりしないのはおいといて…
825デフォルトの名無しさん
垢版 |
2021/09/11(土) 06:02:28.90ID:Ka5OzmL8
あんちょこって何?
826デフォルトの名無しさん
垢版 |
2021/09/11(土) 08:06:33.32ID:A67k4NSD
pythonスクリプトを直接python test.pyって実行すると動くんですが、
bashからtest.pyを起動しようとすると「No module named websocket」と表示され失敗します。
sys.path.appendすると今度は「No module named selectors」と表示されます。
どなたか対処法をご存知でないでしょうか?
環境はCloud9のAmazon Linux 2です。
2021/09/11(土) 09:44:22.44ID:IblrjkB0
そのエラーメッセージで検索すれば?
2021/09/11(土) 10:00:36.84ID:Dj6rAQzj
>>826
モジュール関係でエラーが出た時は
それぞれ一回をsys.pathを出力させて、モジュールの参照先がどうなってるか調べる
(大方実行時に参照してるライブラリのパスが変わってる)
2021/09/11(土) 17:38:25.32ID:YCQOaCey
>>825
カンニングみたいなニュアンス
この場合は、国名を分離するのに国名リスト使ったらそりゃうまく行くが、国名は200数個に限られているからその辺にいくらでも正しいデータ源が転がっているからいいけれど、
データ源を揃えきれないだろう世界の県名とかだったら成り立たず、うまくいかないだろうからモヤモヤするよねって感じだと思う

元のお題は自動処理するにはもともと筋悪だと思うけどね、バラになっちゃったやつを人間がチェックして結合するのが一番時間かからなくて確実そう
830デフォルトの名無しさん
垢版 |
2021/09/11(土) 18:26:28.45ID:A67k4NSD
>>828
ありがとうございます
確かに直接実行した時とbashから呼び出した時でパスが違っています…
何か違う環境として実行されているということなのか…
831デフォルトの名無しさん
垢版 |
2021/09/11(土) 18:31:53.67ID:A67k4NSD
bashから実行した時はなぜかpythonパッケージのパスが2.7になっているようです
2021/09/11(土) 18:59:07.20ID:Dj6rAQzj
>>831
LinuxとかMac環境で実行しようとしてるなら
python test.py ⇒Python2で実行する
python3 test.py ⇒Pyhthon3で実行する
っていう動きになる

とりあえずpython3 --version
を使って、そもそもpythonの3系が入ってるかを見た方が良い
入ってたら必要なライブラリをpython3 pip install〜で入れればOK
833デフォルトの名無しさん
垢版 |
2021/09/11(土) 19:02:25.20ID:A67k4NSD
>>832
ありがとうございます
python3指定で実行するようにしたら成功しました!
2021/09/12(日) 02:01:20.44ID:ysmJ7kfO
linuxなんかだと、pip3とかできないの?
835デフォルトの名無しさん
垢版 |
2021/09/12(日) 11:08:57.22ID:PNU8wIel
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
2021/09/15(水) 19:05:12.55ID:0q0CE+HI
スクレイピングすると地獄へ落ちるって本当ですか?
2021/09/15(水) 20:38:57.55ID:IoiHiFbB
392 名前: デフォルトの名無しさん (ワッチョイ 696a-dGLa) [sage] 投稿日: 2021/09/15(水) 19:01:39.47 ID:fHmj5hYp0
スクレイピングすると地獄へ落ちるって本当ですか?
9 名前: デフォルトの名無しさん (ワッチョイ 696a-dGLa) [sage] 投稿日: 2021/09/15(水) 19:02:48.45 ID:fHmj5hYp0
スクレイピングすると地獄へ落ちるって本当ですか?
294 名前: デフォルトの名無しさん (ワッチョイ e57f-dGLa) [sage] 投稿日: 2021/09/15(水) 19:07:23.60 ID:0q0CE+HI0
スクレイピングすると地獄へ落ちるって本当ですか?
2021/09/16(木) 00:25:58.50ID:i5BIJ4kk
君の人生はもう地獄行きが確定してそうだから不安がるなよ
839デフォルトの名無しさん
垢版 |
2021/09/16(木) 09:38:24.19ID:I3VTO38j
5ちゃんに一日1000回書き込むと極楽浄土が約束されます
2021/09/16(木) 12:46:14.58ID:AVL/loTg
sphinxのスレってwebpg板にもweb製作板にもここにも無いのか
2021/09/16(木) 12:56:20.01ID:ebDt5W+H
1)abc
みたいな文字列を")"の位置でsplitで分割したいとき、
1) と abc
のように分割文字も残したい場合、スマートな方法ありますか?
)でsplitして後から )を足す、という方法もあるかと思いますがなんかスマートでは無いですよね
re.splitならできるのかな?
2021/09/16(木) 14:15:16.89ID:AVL/loTg
re.findallでやってる例がググられた
843デフォルトの名無しさん
垢版 |
2021/09/16(木) 14:18:35.84ID:Q5AMtJ/i
re.findall(r'(.+\))(.*)', '1)abc')
[('1)', 'abc')]
2021/09/16(木) 14:22:48.45ID:AVL/loTg
と思ったらそのサイトの下のほうに
python3.7からre.split()で行けると
a="alpha,beta,gamma"
import re
re.split("(?<=,)",a)
845デフォルトの名無しさん
垢版 |
2021/09/16(木) 17:59:54.65ID:13aXyCX3
CentOS7(armv7l)
python3.6
/usr/localにgcc10.1.0インストールして/usr/lib/libstdc++.so.6を6.0.19→6.0.28に張り替えてある

pandasのバージョン下げたりしてみたけどimportの段階で駄目でした
誰か原因分かりますか?


$ LD_PRELOAD=/usr/local/lib/libstdc++.so.6 pipenv run python3 test.py
成功

$ pipenv run python3 test.py
失敗

import pandas._libs.window.aggregations as window_aggregations
ImportError: /usr/local/lib/libstdc++.so.6: undefined symbol: libiconv

<test.py>
import pandas as pd
url = 'ヤフーファイナンスのurl'
print(pd.read_html(url))

$ ls -l /usr/local/lib/libstdc++.so.6
/usr/local/lib/libstdc++.so.6 -> libstdc++.so.6.0.28
2021/09/16(木) 18:14:47.89ID:TQVwbqUl
nm でそのlibをスキャンしてみたら?
libiconvはどこにつながっている?
847デフォルトの名無しさん
垢版 |
2021/09/16(木) 18:59:56.78ID:13aXyCX3
>>846
libiconvはUで確かに未定義でした
848デフォルトの名無しさん
垢版 |
2021/09/16(木) 23:14:17.32ID:KHTFd4df
pyton3上で地図に棒グラフを立てたいと思い、cesiumpyにたどり着きました。
インストール後、import cesiumpyを実行したことろ、
AttributeError: partially initialized module 'cesiumpy' has no attribute 'data' (most likely due to a circular import)
と出ます。回避方法等ご教示くださいませ。
2021/09/16(木) 23:18:50.22ID:wbqs1W10
マイナーなライブラリについて質問しても答えてくれる人いないよ
circular importとか書かれてるけど、まさかそのファイル名がcesiumpy.pyだったりしないよね
850デフォルトの名無しさん
垢版 |
2021/09/16(木) 23:31:37.25ID:KHTFd4df
>>849
ファイル名は違うものですが・・・マイナーなものは難しそうですね。
ご助言ありがとうございました。
851デフォルトの名無しさん
垢版 |
2021/09/17(金) 08:59:56.61ID:UtF7UwZj
>>848
dependencyは満たしているか?
852デフォルトの名無しさん
垢版 |
2021/09/18(土) 01:57:16.35ID:lb+sAgRD
スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります
2021/09/18(土) 02:04:45.09ID:75qnM2AM
>>852
自治体とコインランドリーに許可を取れ
ちゃんと筋を通せば金になるかもしれんぞ
854デフォルトの名無しさん
垢版 |
2021/09/18(土) 08:28:17.55ID:bA/qQPAi
>コインランドリーの稼働データを集計して空いてる確率が高い時間帯

台風の最中は空いてそうだ
2021/09/18(土) 08:29:01.24ID:BxqtlgPJ
正攻法は>>853だけど裏技的にやるんだったらMVNOのSIM契約してipとかUAを変えながらスクレイピング。
向こうも機械アクセスだと気づきにくくなる。
ただカムフラしてまでやろうとしたということで相手に迷惑かけるかもって気持ちが入ることになるから訴えられたときには不利になる。
2021/09/18(土) 08:41:27.45ID:+7IeVSKz
>>852
図書館の例があるから無許可はもう何しても危ないよねっていうのが共通認識だと思うよ
857デフォルトの名無しさん
垢版 |
2021/09/18(土) 09:09:44.75ID:2a7FPWkS
フォルダ内のファイルをenumerate()で一括連番リネームします
リネーム後の名前が既存かもしれないとき

1回目のループでexistsならパスとリネームを記録,大丈夫ならリネーム
2回目のループで記録したパスをリネーム

これで重複回避して全件リネームできますか?
手元ではできてる気がするんだけど,例外パターンがあるような気がする
(windowsのロングパスとか編集不可属性とか並び順の話は置いといてください)

--
元 : 新
000.txt → 1.txt
00.txt → 2.txt
1.txt → 3.txt
3.txt → 4.txt
こういうことがしたいのです
2021/09/18(土) 09:33:30.24ID:jUwIv+ht
e.txtがすでに存在していたらどうするん?
2021/09/18(土) 09:34:02.57ID:jUwIv+ht
3.txtの間違い
2021/09/18(土) 09:44:49.40ID:lb+sAgRD
>>853-856
回答ありがとうございます
心配性なので許可を取る以外のリスク回避策も知りたいのです
例えば、プログラム書いてもバグでF5アタックレベルの猛烈なアクセスをすることってありえますよね
そういうのが起きないような安全装置の作り方
自前で作ったサーバにも同時にアクセスしてアクセス頻度を証明するログを取る(v6共有IP巻き添え捜査対策)
何らかの理由で訴えられたとき勝つための材料を集めておく
などの方法を教えてくれる書籍がないかと探しています
2021/09/18(土) 09:46:54.79ID:BxqtlgPJ
.netだとtempのファイル名を持ってくるメソッドがあったな。
個人用途でリネーム中に他人がファイル名を変更するという懸念がない条件ならランダム英数字の中間ファイル名を経由してリネームすればいいんじゃない?
企業ユースとかでしっかりやる必要のある処理かつリネーム中の障害とかまで考えるなら安直なリネームは処理中の状態が不安定だから禁忌だと言われるね。
ファイルコピーすると同時に名称変更してリネーム後のファイル群を作り完成したところで元ファイルを削除みたいな動作にする。
(もちろんスピードやディスク容量とかの要件とも相談)
2021/09/18(土) 09:56:28.76ID:dDlDUvsj
対象フォルダにtmpフォルダ作ってそこにリネームして入れていけばいいんじゃ
2021/09/18(土) 09:56:58.79ID:9Dfq3hh+
>>857
その方法だと下の3行のリネームも無理じゃね
0.txt→ 1.txt
1.txt→ 2.txt
2.txt→ 3.txt
俺は、1回目でリネームできないときは
uuid.uuid4().hex を付加してリネームして
2回目で、uuid.uuid4().hexを付加したファイルを、目的のファイル名にリネームしてる
864デフォルトの名無しさん
垢版 |
2021/09/18(土) 10:04:11.39ID:bA/qQPAi
>>857
000.txt -> 1.txt -> 2.txt -> 3.txt -> ... って無限に繰り返す危険は0と言い切れる?
865デフォルトの名無しさん
垢版 |
2021/09/18(土) 10:44:49.91ID:2a7FPWkS
>>863
あーそうか…
じゃあexistsのときはunique_suffix付きでリネームして
最終的にケツ削る感じにします
uuid知らなかったんですが、いいですねこれ
今回は259文字制限下なのでアレだけど勉強になりました
2021/09/18(土) 12:17:29.33ID:9Dfq3hh+
>>865
ちなみに、existsするのがフォルダだった場合処理できないよ
2.txtみたいな名前のフォルダ・・・
2021/09/18(土) 13:21:25.11ID:IiEq2a0h
>>852
素人は、本番サーバーでテストしてはいけない。
素人のアプリは、バグで無限ループして、何万回もアクセスするから

必ずダウンロードして、自分のPC 内でテストしないといけない

それと本番サーバーに、100回とか繰り返しアクセスする場合は、
必ず、相手のrobots.txt を遵守すること!

または、相手と契約して、API を使うこと

基本、スクレイピングは営業妨害との戦い。
どの本にも、そう書いてある。
スクレイピングを推奨する本はない

必ず、robots.txt 遵守か、許可を得る、または契約すべき

山浦清透、2021/6

【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI

この動画では、Laravel で、マイナビ転職をスクレイピングしている。
27:40 から、robots.txt を調べている
868デフォルトの名無しさん
垢版 |
2021/09/18(土) 13:56:07.34ID:LBCfu3j9
どの本にも〜とか言う割に本は挙げないのな
2021/09/18(土) 15:25:34.95ID:ZDaB5e5K
selenium(ChromeDriver)で
すでにbuttonのWebElementまで取得している状態で、単にそれがクリック可能になるまで待つときはどう書けばいいの?
イメージは↓こんなだけどWebElementは引数に与えられないみたい。
WebDriverWait(driver, 5).until(
EC.element_to_be_clickable(button)
)
2021/09/18(土) 15:34:01.38ID:aJjTmiOO
改めて locator を与えればいいんじゃね?
2021/09/18(土) 15:58:23.33ID:9lUPAjpA
ある条件を満たした時にプログラムを再起動したくて
subprocess.call(__file__, shell=True)
と記述してるんですが挙動がおかしいです
どうおかしいのかと言うと、プログラムを強制終了したい箇所で
sys.exit()
と記述してるんですが、そこでも再起動されてしまいます
どう改善したら良いでしょうか
2021/09/18(土) 16:03:37.86ID:ZDaB5e5K
>>870
WebElementオブジェクトからlocarorって取得可能?
今回のbuttonが、findで一意に特定できないエレメントだから、Waitの例でネットによく書いてあるBy.xxxの書き方だと、複数のbuttonがWaitの対象になってしまうんだよね
特定の1つのエレメントだけをwaitの対象にしたいのだが
873871
垢版 |
2021/09/18(土) 16:03:39.53ID:9lUPAjpA
>>871の補足です
subprocess.call(__file__, shell=True)
で、一度再起動した後で、
sys.exit()
を実行すると、強制終了しないで再起動してしまう挙動を何とかしたいということです
2021/09/18(土) 16:17:13.98ID:9lUPAjpA
自己解決しました
>>871>>873の質問は撤回します
2021/09/18(土) 17:09:13.84ID:jUwIv+ht
どう解決したのか書くのが礼儀やで
876デフォルトの名無しさん
垢版 |
2021/09/18(土) 18:13:33.17ID:J85RgKD5
頭のおかしい人に以下のようなことを言われました

>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない

具体的な書籍名を教えてください


>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない

どこでそんなルールが決まっているのでしょうか?
2021/09/18(土) 18:30:17.02ID:6JilEPez
マルチポストすんな
2021/09/18(土) 18:53:11.55ID:b0edjBZj
>>876
お前頭悪そうだな
2021/09/18(土) 18:54:45.08ID:+/kaLHzE
>>876
> どこでそんなルールが決まっているのでしょうか?
決まってないよ
ただ普通の頭持ってたらマルチポストが回答者に失礼だと言うことはわかるはず
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況