くだすれPython(超初心者用) その46【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/01/02(木) 15:56:54.08ID:ZUrZA+uS
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

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

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

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

〇前スレ〇
くだすれPython(超初心者用) その45【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1571188632/
2020/01/26(日) 13:16:45.26ID:Y8WnpXRT
おそらく

https://stackoverflow.com/questions/47692960/error-when-using-pyinstaller-unicodedecodeerror-utf-8-codec-cant-decode-byt

でpyinstallerの設定変えろってことなんだとおもうんですが、anaconda使用してターミナルからpipでインストールしたpyinstallerがどこのフォルダにあるのかわからない・・・
アナコンダでインストールしたPyhotnのフォルダってそもそもどこにあるんでしたっけ?
2020/01/26(日) 13:29:59.77ID:0XMsrEiZ
>>396
文字コード
BOM
2020/01/26(日) 13:32:53.47ID:Y8WnpXRT
>>398
ソースコードをBOMなしで保存してみましたが、同じエラーで・・・。
2020/01/26(日) 13:58:33.95ID:0XMsrEiZ
>>399
じゃあ文字コードあってるかどうかというか、
そもそも、ちゃんと、指定してるんか?
2020/01/26(日) 13:59:44.19ID:0XMsrEiZ
>>397
だから>>1嫁ってば
OSくらい書かないとわからん
2020/01/26(日) 17:35:08.11ID:Y8WnpXRT
>>401
os windows10
anaconda
python3.7

です。
https://stackoverflow.com/questions/47692960/error-when-using-pyinstaller-unicodedecodeerror-utf-8-codec-cant-decode-byt
の方法で

out = out.decode(encoding, errors='ignore')

としたら実行ファイルできたけど、
Runすると

読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力

となるはずが、読み込みファイルを聞いてこず、なにか謎処理をしてグラフは出さずに計算結果だけ出力します。
なんだこりゃ。
403デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:02:56.11ID:R5dI7Hbk
Anaconda信者はちゃんとサポートしてやれ
俺はあんなゴミ使わないから知らねー
404デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:05:10.13ID:htXcC3/b
配列で
0番目の値を1番目の値に足す
1番目の値を2番目の値に足す
というのを繰り返して
最後は
n番目の値を0番目に足す
こういうループを作るのってどうすればいいですか?
a=[]
for i ,h in enumerate(haireru):
___a.append(hairetu[i]+hairetu[1+1])

にすると最後ゼロ番目と計算できないです
405デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:34:25.67ID:htXcC3/b
すみません

aは配列じゃなくてループ内ですぐに使いたいので
iはゼロはじまりでお願いします

for i ,h in enumerate(hairetu):
___a=(hairetu[i]+hairetu[i+1])
__b=c*a
2020/01/26(日) 18:39:12.37ID:ux8Vy6ZU
>>404
foo = [1,2,3,4,5]
[ x + y for x, y in zip(foo, foo[1:] + [0])]
#=> [3, 5, 7, 9, 5]

このパターンこのスレだけでもう3回目くらいだと思うんだけどなんで頻出なのか謎
2020/01/26(日) 18:39:24.22ID:0XMsrEiZ
>>402
だから文字コード(encodingの中身)をちゃんと指定汁とさっきから言ってるだろうがよ

Anacondaの詳しいことはおれもよーしらんわ >>403
2020/01/26(日) 18:40:00.40ID:0XMsrEiZ
>>406
どこかの私大の追試レポートで出てると予想
2020/01/26(日) 18:43:49.29ID:+Q3fYZeR
>>403
Anaconda信者とかより、コミュとれない奴の相手はエスパー・高脳でないと相手できないからな。
>読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力
以下略
は、エスパー・高脳でないとポカーンになる感じだからな
2020/01/26(日) 18:50:45.78ID:UvzYuhqV
[ x + y for x, y in zip(foo, foo[1:] + foo[0:1])]
#=>[3, 5, 7, 9, 6]
411デフォルトの名無しさん
垢版 |
2020/01/26(日) 21:10:21.36ID:htXcC3/b
>>406
>>410
ありがとうございます
配列って[:]どうしだと合体できるんですね
助かりました
2020/01/26(日) 21:40:26.45ID:Y8WnpXRT
401ですけど、

すいません。
コード上げてきちんと質問するべきですよね。
期限迫ってたのであせってたのですが、寝落ちして少し頭冷めました。
あきらめて現在のところまででまとめることにしました。

今の仕事終えてから、ご指摘頂いたこともう一度確認してみます。
413デフォルトの名無しさん
垢版 |
2020/01/26(日) 22:23:07.80ID:mYb8Rqtn
>>404,405
n=len(hairetu)
for i ,h in enumerate(hairetu):
___a=(hairetu[i]+hairetu[(i+1)%n])
__b=c*a
414デフォルトの名無しさん
垢版 |
2020/01/29(水) 16:41:03.56ID:rr34JdCX
どこまでdefでまとめるのが良いのかアドバイスお願いします
一定の距離ごとに物体の置いてその場所や向きや大きさを決めています
距離ごとに計算すべきなのか
最初から物体の位置、向き、大きさをすべて計算して
置けばよいのでしょうか?

↓距離ごとの計算
for km in 距離:
__物体の位置()に物体を置く処理
__向きの計算()に物体の向きを変える処理
__大きさ()に物体の大きさを変える処理


def 物体の位置:
___計算式

def 物体の向き:
__計算式

def 大きさ():
__計算式
415デフォルトの名無しさん
垢版 |
2020/01/29(水) 16:43:09.94ID:rr34JdCX
続きです

↓まとめて計算した場合
for x in 物体の位置():
__物体を指定の位置に置く処理

for y in 物体の向き():
__物体を指定の向きに置く処理

for z in 物体の大きさ():
__物体を指定の大きさにする処理

def 物体の位置():
位置 = []
__for km in 距離:
___位置.append()
__return 位置

def 向きの計算():
向き=[]
__for km in 距離:
___向き.append()
__return 向き
2020/01/29(水) 17:34:31.08ID:V4INQ4I7
>>414
その2つなら後者を選ぶケースは考えにくいかな

俺の読解力の問題かもしれんが、「for km in 距離:」がよく理解できん
距離はどういうイテレータ?
例えば、距離 = [1, 2, 3, 4, 5] みたいなものと考えればいいの?
で各距離の値によって各物体の位置、向き、大きさが決まる?
417414
垢版 |
2020/01/29(水) 20:49:58.87ID:rr34JdCX
>>416
ありがとうございます
一個目みたいにまとめることにします

for km in 距離:は
各距離から置く場所や向きや大きさを決めてます
2020/01/29(水) 22:13:17.15ID:V4INQ4I7
>>417
各物体の位置・向き・大きさを計算する部分と
それを使ってI/O的な処理をする部分は分けておいたほうがいいと思う
それぞれ違う理由で変更したくなるから混ざってると後で面倒

きれいに分かれてれば計算しつつ出来た順にI/Oするよう変更するのも簡単

↓関数/データに分けた場合とオブジェクトにまとめた場合のイメージ
https://techiedelight.com/compiler/?n7t7
https://techiedelight.com/compiler/?qDa4
419414
垢版 |
2020/01/30(木) 01:07:15.66ID:TCVWvduC
>>418
解説をつけてもらってありがとうございます
入力・出力もどうしようか悩んでいたので
助かります!!
2020/01/30(木) 17:49:07.16ID:9oqZpWVT
raspbian上でwebviewを使用しています。
公式ページのサンプルをコピペしたのですが、そんなattributeは無いとエラーになります。
オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。
2020/01/30(木) 18:46:06.53ID:xpd5gNHP
>>420
>>1読んでから端末投げ捨てるか、レンチンしろ
2020/01/30(木) 20:24:40.55ID:9oqZpWVT
>>421
意味不明なんだが?
423デフォルトの名無しさん
垢版 |
2020/01/30(木) 23:03:41.98ID:zqJjLosR
あっそ
じゃあしねよ
2020/01/30(木) 23:10:41.47ID:SpgFxTsY
>>422
煽りが返ってくるってことはだいたい質問が悪い
公式ページのサンプルってどこの公式だよURLくらい貼れ
何を実行してるかわからないのに答えられるわけないだろ
425デフォルトの名無しさん
垢版 |
2020/01/30(木) 23:12:46.73ID:TcPsF5Vj
>>423
キモすぎワロタ
426デフォルトの名無しさん
垢版 |
2020/01/30(木) 23:16:17.43ID:TcPsF5Vj
オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。

これに答えろってことだろ
なにをぶつぶつ言ってるんだよw
2020/01/30(木) 23:18:48.25ID:N/97jNZ6
>>420
import inspect
inspect.gemembers(your_object)

かな?
2020/01/30(木) 23:38:39.08ID:N/97jNZ6
>>427
>inspect.gemembers(your_object)

getmembers()の間違い
dir() や help() でも可
429420
垢版 |
2020/01/31(金) 11:20:07.05ID:NXB8BBj3
>>428
教えていただいた方法で表示できました。ありがとうございます。
2020/01/31(金) 17:45:06.72ID:KoDF/0eX
(´n`).o(429の端末が初期不良期限翌日に壊れますように)
431デフォルトの名無しさん
垢版 |
2020/01/31(金) 17:48:23.76ID:ltLMy86h
惨めだなぁ…
2020/01/31(金) 22:07:10.58ID:WYJCj5Ov
hoge = "わたしの名前は{0}です"

こういう変数hogeは、f-stringで値埋め込むのは無理だよね?
hoge.format()するしかないよね
2020/01/31(金) 22:14:17.30ID:KoDF/0eX
>>432
ムリジャナーイ Python!

hoge = "わたしの名前は{{0}}です"
hoge
↑この2行をこのままコピペ実行してみよう!
(3.6.5以降なら確実におk)
434デフォルトの名無しさん
垢版 |
2020/01/31(金) 23:36:34.66ID:BFxfTyah
惨めな上に頭も悪いときたあ
2020/02/01(土) 00:19:43.16ID:EnxAFhi/
>>432
template = lambda: f"わたしの名前は{name}です"
name = "foo"
f"{template()}"
#=> ’わたしの名前はfooです'

f-stringのlazy evaluation版はi-stringってので提案されてるらしい
https://www.python.org/dev/peps/pep-0501/
2020/02/01(土) 07:59:04.74ID:caubOhav
>>435
なるほどぉ…
出来ることは理解したけど、微妙に読みづらい感があるな
ありがとうございました
437デフォルトの名無しさん
垢版 |
2020/02/01(土) 15:23:41.81ID:p+nIpDYx
デバックについての質問なのですが
evo=[1,5,3,8]
ana=[7,6,5,4]
for e,a in zip(evo,ana):
____print("aaaa")
____c=a*b
____d=e+c

をコピペしてデバッグしてるのですが
de=3
a=ana[de]
e=evo[de]
if 1=1:
#for e,a in zip(evo,ana):
___print.....
___.........

みたいな感じでif分つけて無理やりインデント合わせてコピペして
デバッグしてますが
そういうループの途中だけ動きを見る方法でもっといい方法ありませんか?
438sage
垢版 |
2020/02/01(土) 15:32:30.14ID:aHBNrXGA
MATLABでいうsimulinkの代用になりそうな物ってありませんか?環境移行したいんですがこれだけどうしても見つからなくて。
439デフォルトの名無しさん
垢版 |
2020/02/01(土) 15:38:32.96ID:fiLTG5Nb
evo=[1,5,3,8]
ana=[7,6,5,4]
for e,a in zip(evo,ana):
____if (e, a) != (8, 4): continue
____print("aaaa")
____c=a*b
____d=e+c
2020/02/01(土) 15:49:16.27ID:iBA7Xa3w
>>437
デバッガ使えばいいんじゃね?
https://docs.python.org/ja/3/library/pdb.html
441デフォルトの名無しさん
垢版 |
2020/02/01(土) 16:00:39.94ID:p+nIpDYx
>>439
for の中にifコンテニューですか
ありがとうございます

>>440
そんなものあったなんて知らなかったです
ありがとうございます
2020/02/01(土) 16:10:15.40ID:CimOJomw
IDEとかエディタ使えない環境なの?
2020/02/01(土) 16:10:30.84ID:EnxAFhi/
>>437
デバッガでconditional breakpointを設定して
変数が特定の値になった時だけbreakさせる
2020/02/01(土) 16:20:42.33ID:EnxAFhi/
$ python3 ipdb_conditional_breakpoint.py
1 import ipdb; ipdb.set_trace(context=10);
2
3 b = 2
4 evo=[1,5,3,8]
5 ana=[7,6,5,4]
6 for e,a in zip(evo,ana):
7 ____print("aaaa")
8 ____c=a*b
9 ____d=e+c

ipdb> break 7, e == 8
Breakpoint 1 ./ipdb_conditional_breakpoint.py:7
ipdb> c
# e ==8 の場合のみ7行目で停止
ipdb> print(e, a)
8 4
445デフォルトの名無しさん
垢版 |
2020/02/02(日) 22:34:59.17ID:nTdekf5z
forやdefで使う変数が多くなったときはどうしてますか?
7個ぐらいになってくると
行が長くなって何とかしたほうが良いのか
悩みます

色々ありがとうございます
>>442
blenderというソフト内のpython使ってて
本格的なデバッグ機能があまりないのです
その辺りは専用スレで聞いてみます
2020/02/03(月) 00:07:04.35ID:XimuQ1Xy
>>445
型にまとめられるものはまとめる
単に行が長いのが困るだけなら改行すればいいだけ
あとは*args, **kwargs
447デフォルトの名無しさん
垢版 |
2020/02/03(月) 00:42:52.51ID:M5UXjnSG
>>446
ありがとうございます
なんでも改行可能なんですね
中身を変数にまとめれるんですね
助かります!!
2020/02/03(月) 01:02:38.47ID:XimuQ1Xy
>>447
なんでもは改行できないよ。
改行できるとこだけ。
2020/02/03(月) 01:07:17.80ID:XimuQ1Xy
2.1.5. Explicit line joining
2.1.6. Implicit line joining
https://docs.python.org/3/reference/lexical_analysis.html#explicit-line-joining
450デフォルトの名無しさん
垢版 |
2020/02/03(月) 12:17:00.67ID:62FLJlST
>>445
おすすめはせんけど行減らすだけなら
a=1
b=2
c=3
のかわりに
a,b,c=1,2,3
意味のあるまとまったデータなら別クラスにして
hoge=Hoge(1,2,3)
451デフォルトの名無しさん
垢版 |
2020/02/03(月) 12:20:59.82ID:62FLJlST
ああそういう意味じゃないのか
制御変数の話なら適当に改行汁

あと blender は漏れも使ってるけど
癖があるので普通の python だと思わない方が良い
(普通の python で慣れてる人が使う分には問題無いが)
考え無しにあれを使い続けると糞プログラマになるだけだと思う
2020/02/04(火) 23:09:14.52ID:0mUTKS9X
plt.subplot使ってグラフを2つ表示しています

plt.subplot(1, 2, 1)
plt.title('attention')

plt.subplot(1, 2, 2)
plt.title('Non attention')

2つのグラフの下中央に大きなタイトルを表示したいのですが、
なにか良い方法ありますでしょうか?
2020/02/05(水) 10:06:39.19ID:FfddlBUI
def test():
def test_test():
print("test")
があったときに、test_test()を呼び出すにはどうしたらいいですか?
2020/02/05(水) 10:25:09.93ID:boA3ajbM
ちょっと何言ってるか分からない
2020/02/05(水) 10:41:21.50ID:d60p+KZz
ARM64でビルドしたPythonってどっか落ちてませんか
2020/02/05(水) 11:33:01.43ID:FfddlBUI
>>454
すみません、インデントが反映されていなくて分かりづらい感じになってしまいました。
↓のように、クラス内にメソッドがあって、メソッドの中に関数がある場合
どうやって関数を外部から呼び出せばいいのでしょうか?

def test():
 def test_test():
  print("test")

外部ではなく、内部から呼び出すには

def test():
 def test_test():
  print("test")
 test_test()

とすれば呼び出せますが、test()の外から呼び出す方法を知りたいです。
457デフォルトの名無しさん
垢版 |
2020/02/05(水) 12:38:02.65ID:fbcJymO4
ローカル変数みたいなものだから外部からアクセスはできない
2020/02/05(水) 13:09:59.68ID:+QFykdso
def test(str):
・def closure():
・・print(str)
・return closure


c = test("closure test");
c()
2020/02/05(水) 13:14:47.01ID:d60p+KZz
class testclass:
  def test(self):
     def test_test(str):
       print(str)
     return test_test

f = testclass().test()
f("aaaaaaa")

へぇこんな事できるんだ、何に使えるもの?
2020/02/05(水) 13:23:28.11ID:FfddlBUI
>>458
>>459
ありがとうございます。

今までメソッドは全部selfで書いてたんですが
毎秒何百回も処理するような処理を書くとやたら遅くて
試しにメソッド内部に関数を書いたら処理速度が速くなりました。

selfでメソッドを呼び出すと遅くなるので、処理速度を早くしたいときはローカル関数として定義した方が良いみたいです。
461デフォルトの名無しさん
垢版 |
2020/02/05(水) 14:20:51.30ID:2gxpMPkb
>>459
デコレータとか
2020/02/05(水) 15:18:52.75ID:6NLusyAl
csvの例えば5列目が2,3,5,7,3,5,7,,,,,といろんな数字で並んでるとき、
その列の特定の数字を一括して別の数字に変換して、csv保存したいのですが、サンプルコードを頂けないでしょうか
463デフォルトの名無しさん
垢版 |
2020/02/05(水) 15:32:28.07ID:HabtckGA
>>462
pandas 置換 🔍
464デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:46:26.26ID:2rKdW1Ec
>>452
figureの任意の位置にテキスト表示出来る
465デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:49:43.06ID:2rKdW1Ec
>>460
適当なことを言うな
2020/02/05(水) 17:01:00.50ID:FfddlBUI
>>465
いや、ホントの話
467デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:05:15.67ID:2rKdW1Ec
うそだとは言っていない
2020/02/05(水) 19:29:47.90ID:PnTZcdWz
毎秒何百回程度でやたら遅くなる

とか言うのは嘘と言い切ってもいいと思う
2020/02/05(水) 19:56:00.86ID:FfddlBUI
>>468
いやこれもホントに
処理内容次第なので、処理負荷の低いものなら気づかないですけど
timeitとか使わなくても目で見て明らかに遅いレベルまで遅くなったんです
信じてもらえなくても別にいいですけど、僕に得も何もないんで
470デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:59:06.82ID:2rKdW1Ec
@staticmethod
2020/02/05(水) 20:21:18.03ID:3A2Vd31x
cとPHPとシェルとストアドプロシージャ位しか書けないんだけど
パイソンでDLバリバリになるには何の書籍から始めるのが良い?
やっぱ統計学はやんなきゃ話にならない?
2020/02/05(水) 20:27:09.11ID:xJPwpbdq
>>471
統計がわからない機械学習エンジニアはただの占い師
ビジネスがわからない機械学習エンジニアはただのベンチマーク厨
473デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:32:56.42ID:V2ceD5vC
敢えて喩えるほど実際から離れていく
2020/02/05(水) 20:45:08.49ID:oCA39UVc
>>471
はなしにならんので勉強汁
475デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:45:33.80ID:gx9j2avt
統計ってベイズ推定とか?
2020/02/05(水) 20:50:45.28ID:Pb0OV2Dy
統計とかエクセルでまとめた方が使いやすくない?
2020/02/05(水) 20:56:17.65ID:l5EZ/l0z
>>472
俺、機械学習さっぱりわからんが、なんか核心をついているような言葉だが
基礎となる統計がわからない自称機械学習エンジニアはただの占い師
ターゲットのビジネスがわからない自称機械学習エンジニアはただのベンチマーク厨
が正しいんじゃないのか

>>471
>cとPHPとシェルとストアドプロシージャ位しか書けないんだけど
こんな自己紹介からして、お前はソフトエンジニアではなくプログラムかける土方
ってかんじだろ。
そんな奴が目指しているのは機械学習"エンジニア"ではなく
機械学習を用いる占い師 や機械学習のベンチマークができる厨 じゃないのか?
なら、統計学なんてやる必要ないんじゃないか。
エンジニアになりたいなら基礎理論の統計学はしっかりやらんとだめだろうが。
どの分野でもめざせエンジニアなら基礎はしっかりやらないと駄目だろ。
例えばソフトエンジニアなら大学・大学院の情報工学科でやるようなことは
学んでないとな。
と偉そうなこと言っている俺は趣味でプログラミングなんだがな。
478デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:58:14.94ID:V2ceD5vC
なげえよカス?
2020/02/05(水) 21:10:16.72ID:GCTF3gV7
>>469
そこまで言うなら比較用のコードでも出してくれ
2020/02/05(水) 21:10:55.94ID:aNozFXKi
長さの割に中身ゼロの長文には参るな

>>477は今ではチョロっとライブラリインストールするだけで
どんな素人でも始めることのできる機械学習についてまったく分からず
おまけにプロでもないアマチュアなのでエンジニアの求人にも必要資格にも全く詳しくないけど
「エンジニアの資格」にだけは一家言ある変な人ってわけだ
2020/02/05(水) 21:20:46.43ID:oCA39UVc
>>475
ほかにもあるから教科書買ってきて嫁

>>476
きゃつは万能ではないし、
昔はデータ数制限がきつくって、今も(高額な専用ソフトはもちろんだが)Rに劣っている
2020/02/05(水) 21:27:18.91ID:ZizT6Tal
簡単なことなんだけどな
データがあって、目的が決まっている
この二点をクリアできないと機械学習をする意味がない
二点がクリアされたとしても性能がでるという保証はないが
483デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:04:06.46ID:GAMNd4TG
BeautifulSoupとかいうのを使ってGoogle画像検索結果をスクレイピングしてたけど
多分Google検索結果あたりが変わってとれなくなりました。

html.select('.rg_meta.notranslate')
このあたりの仕様が多分変更になったと思うんですが
うまく取得できる方法を教えて頂けたら有難いです…。よろしくお願い致します;。
484デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:10:38.29ID:76t6g1c3
今後検索結果が変更になる度にここで聞くのかな?(笑)
485デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:14:57.47ID:GAMNd4TG
>>484
申し訳ありません…
でしたら、クラスの指定と思うのですがそのあたりのコツと言いますか
間違いなく出来る方法あたりをお教頂けましたら…
現在  .rg_i というクラスはあるのですが
これをもう、 .rg_i. src img href a そのた思いつくものを
やれるだけ順番を前後させても、半日以上経過しても進めず
本当に苦しくなってきてしまっておりまして、すみません…。
2020/02/06(木) 09:31:11.49ID:xfRnZ+h4
BeautifulSoup使ったことないがググったら答え即でたw
487デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:37:38.28ID:GAMNd4TG
>>486
すみません…。自分は前後を変えたり何度やっても
空といいますか画像が取得できないので、
お教頂けたら、ありがたいです…。
488デフォルトの名無しさん
垢版 |
2020/02/06(木) 10:35:45.43ID:GAMNd4TG
>>486
すみませんです…どうやって検索したらよいかお教え頂けましたら…
489デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:07:22.39ID:d7NhcEcy
教えてやるからどこかにパースしてるHTMLを全部置け
そしてどの要素が欲しいかHTMLの中に <!--この要素が欲しい--> と書け
2020/02/06(木) 11:20:21.83ID:xfRnZ+h4
JavaScriptで動的になったからSelenium使えって書いてた
491デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:27:31.04ID:GAMNd4TG
有難うございます。
すみません、keywordは山として以下のようにして取得を目指しており
それで<!-- --> でほしいのですが 以下の表記方法ではだめでしょうか。




urlKeyword = parse.quote(keyword)
url = 'https://www.google.com/search?hl=jp&;q=' + urlKeyword + '&btnG=Google+Search&tbs=0&safe=off&tbm=isch'

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/10.0",}
request = req.Request(url=url, headers=headers)
page = req.urlopen(request)

html = page.read().decode('utf-8')
html = bs4.BeautifulSoup(html, "html.parser")

elems = html.select('.rg_meta.notranslate')


この最後の.rg_meta.notranslate のあたりで目的の画像を一つ一つ取り出せなくなっていると分析しています。
492デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:28:23.61ID:GAMNd4TG
一昨日くらいまでは取れておりました。
現在も、 ではグーグル画像検索そのものが取れてないとか何かブロックされているのか?と言うと
elems= の前に 例えば print(html) とするとGoogle画像検索結果の画面全体は取れているのです。
しかしそれは全体像なので、個々の1枚1枚を取得してphpmyadminに格納したり、とかそれが狙いであるので
elems = のところでつまずいてはやはりまずい具合です。

そして目的の画像検索結果、 例えば 山で検索して


<!--
<img class="rg_i Q4LuWd tx8vtf"
src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-iid="0" data-iurl="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRFWZJ-G8GOvPEcPPJZqy_IqLTMokKOyW_VAdDON2S_9V6cnOQZ"; jsname="Q4LuWd"
alt="「山」の画像検索結果" />
-->
↑この要素が欲しいものです
ここのimgのclassにrg_i というものがありこれはヒントの一つ?かと想像したりするのですが
data-iurl= のこれが取得したい画像のURLだと思います。 URLで hrefでなく こういう書式で表示されているのだな、と思いますが
ここを取得したいと思っております。
すみませんが;宜しくお願い致します;
493デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:42:27.42ID:GAMNd4TG
>>490
左様でございますか。一応使ったことはありますが
ちゃんと使いこなせるのかどうか…うーむ…
2020/02/06(木) 12:10:59.12ID:xAE/eJ0Q
改行を含めてfindする方法ってないですか?
2020/02/06(木) 12:25:05.18ID:PruBe/51
>>492
他に使ってなさそうで欲しい属性分かってるんだったら
elems = html.select('img[data-iurl]')
これでよくね

あとfirefox10でも47でもないいい加減なUAはやめとけ
2020/02/06(木) 12:35:55.03ID:/hIhK6yv
要素を非同期処理で読み込むから、要素が存在しないとか、
サイトの構成が変わったとか、
XPath/CSS セレクターが間違っているとか、
相手がアクセスをブロックしてくるとか

スクレイピングは、相手のサイトを分析するのが難しいのと、
適切に限定される、セレクターを作るのが難しい

API が公開されているなら、APIを使った方がよい

漏れは、Ruby で、Selenium WebDriver, Nokogiri などで、
Chrome, Edge などのブラウザーを自動操作して、スクレイピングするけど

ここに書いておいた

【VBScript】WSHについて話し合うスレ【JScript】
https://mevius.5ch.net/test/read.cgi/tech/1578522041/24-27
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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