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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/03/07(土) 00:40:52.77ID:k5ibAr7h
当スレに★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(超初心者用) その46【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1577948214/
2020/03/22(日) 20:14:11.05ID:V1WguA+k
df自体がDataflameオブジェクトのインスタンスなんだけどそんなこともわかってないのかな
158デフォルトの名無しさん
垢版 |
2020/03/22(日) 20:59:21.81ID:034if9xC
関数型プログラミング HOWTO
https://docs.python.org/ja/3/howto/functional.html
2020/03/22(日) 21:23:41.12ID:ZXA28Lms
>>146
「df10」みたいに
変数名や関数名、クラス名などに
数字がつく時点で間違ってる

Pythonのまともな本の
サンプルコードでは
まずそうなってないはず
2020/03/23(月) 07:00:21.83ID:jGS2rL5b
>>156
Ruby では普通は、モジュール内にはクラスを定義するけど、
単にモジュール関数も定義できる。
例えば、my_utility.rb 内に、モジュールを定義する

module MyUtility
def my_func( 引数 )
end

module_function :my_func # 外部へ公開する
end

別のファイルで、上のモジュールを読み込んで、関数を呼び出す

require_relative "my_utility.rb"

MyUtility.my_func( 引数 )
2020/03/23(月) 07:17:37.19ID:AJbCMuHR
>>156
あえて一言でポイントだけ言うと
クラスを作るかどうかは
状態を管理したいかどうか
162デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:22:42.49ID:Wiq2xD8N
Pythonって文字列部分にダブルクオートを使わずに
シングルクオートを使って書かれてるコードの方が多い気がするんですけど何か意味あるんですか?
シングルクオートのキーボードの位置って結構押しづらい位置にあるからあんまり使いたくないんですけど
2020/03/23(月) 08:26:12.90ID:1jGdZOlI
>>159
すいません。
実際の名前を書くと長くなりすぎるかと思って適当な名前をつけてしまいました。

ちなみに実験条件1、実験条件2データを
experimental_condition1
experimental_condition2
というのもあまり良くないのでしょうか?
2020/03/23(月) 08:28:16.86ID:1jGdZOlI
>>161
状態を管理するってどういう意味でしょうか?
本とかでゲームを題材に敵を量産するためにクラスを作るのはわかりやすいのですが、
数値計算とかだと、どこでクラスを使うべきかよくわからなくなります
2020/03/23(月) 08:30:56.02ID:xjUUBC3G
>>162
USキーボードはダブルよりシングルの方が押しやすいから
2020/03/23(月) 08:36:28.36ID:1jGdZOlI
>>158
なるほど
関数型プログラミングとは聞いたことがありましたが、こちらの方が数値計算とかだとしっくりくるような気がしますね
2020/03/23(月) 08:36:49.58ID:AJbCMuHR
>>164
単純な数値計算は関数だけでもいい
むしろその方がスッキリする
三角関数とかに状態とかないから

ゲームの場合は状態遷移の塊で
状態を保存しておきたいから
クラスを作りインスタンスを生成する
168デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:48:04.30ID:Wiq2xD8N
>>165
ありがとうございます
そういう理由なんですね
169デフォルトの名無しさん
垢版 |
2020/03/23(月) 14:16:09.84ID:QFUl7nfE
>>162
US-ASCII キーボード使え
170デフォルトの名無しさん
垢版 |
2020/03/23(月) 14:18:54.80ID:QFUl7nfE
>>163
dfA とか dfB とか dfZ とか使ってる人もいる
どっちにしろ素人丸出しコードになるのでお薦めはしない
2020/03/23(月) 15:27:10.13ID:ryqQXgQk
>>162
なんでだろう(´・ω・`)
172デフォルトの名無しさん
垢版 |
2020/03/23(月) 15:32:39.96ID:GoZ/zzdR
"..." より '...' の方が見やすいから
2020/03/23(月) 16:09:30.51ID:ryqQXgQk
ぺっぷってやつにどっちが推奨とか書いてないの(´・ω・`)
174デフォルトの名無しさん
垢版 |
2020/03/23(月) 16:16:46.89ID:8qspM6DN
"""hogehoge"""
↓よりも見易いのは
↓こっちやろ
'''hogehoge'''
2020/03/23(月) 16:38:38.85ID:z9Gq1+e6
blackがダブルクォーテーション推してるからダブルクォーテーション使え
2020/03/23(月) 16:52:05.42ID:AJbCMuHR
>>163
(とくに二桁以上に増える可能性があるものは)
後で複雑化して大変になるから
たとえば配列を使ったりして
番号を振らないで済むようにする方が推奨できる
2020/03/23(月) 17:23:40.55ID:oBNr3evO
>>175
> black
とは何?
2020/03/23(月) 17:23:45.28ID:VZVdXewz
>>163
なげーよ、短く且つなんのデータフレームかわかる命名しな。センスが問われる。
2020/03/23(月) 17:24:55.58ID:VZVdXewz
>>162
C#ではダブコ使うからダブコに合わせる
2020/03/23(月) 17:52:55.08ID:v136K/0Z
>>177
pythonのほぼ公式formatter
2020/03/23(月) 19:06:21.87ID:6kgKLG+2
>>163
テストが2つしかないと明確に決まってるなら〜one,〜twoでいいと思うけど
それがいくつになるのか解らない、もしくは多いのならリストを使って
〜[x]としたほうがスマートというか扱いやすい

変数名、関数名、クラス名に数字を使わないというのは
プログラムの作法(?)として言語を問わず普通というか当たり前
2020/03/23(月) 19:12:01.32ID:6kgKLG+2
あと、なんか知らんけどこのスレ、プログラミング自体が初めてな
感じの奴多い気がするんだけど、学生なのかね?

なんかpython選択しちゃってどうしたらいいか解らない的な
質問が多い気がする
2020/03/23(月) 19:31:59.80ID:AJbCMuHR
>>182
PythonのPHP化だよ
すそ野が広がれば初心者も増える
2020/03/23(月) 19:38:36.51ID:7lDoSnDw
超初心者ってのはプログラミング自体初めてっていうヤツのことなんじゃないの
初心者に輪を掛けて超がついてんだよ
それ以外に何かいるの
2020/03/23(月) 20:08:06.36ID:c8DMHYto
>>180
まだベータのくせに
2020/03/23(月) 20:17:50.72ID:1xaugprd
>>183
ユーザー層的にはPHP化というよりExcel化だな
2020/03/23(月) 20:44:39.58ID:kT8JkACi
>>183
やめろよ、Ruby野郎が来るだろうが
2020/03/23(月) 21:28:47.12ID:qQ8i/Woj
わいRuby厨、いまからプログラミング始める学生に勧めるならもうRubyよりPythonかなって思ってたけど、お前らは最初の言語は何がいいと思ってんの?
2020/03/23(月) 21:34:54.41ID:OcfkpGgM
C
2020/03/23(月) 21:38:14.26ID:edDkqZEC
Java
2020/03/23(月) 21:42:04.82ID:oBNr3evO
最初ならアセンブリ。冗談じゃなく。
ほんのちょっと齧っておくだけでいい。
2020/03/23(月) 21:44:01.50ID:iyDg9ARV
>>188
目的次第
2020/03/23(月) 21:51:24.25ID:OcfkpGgM
>>191
Cとどっち書くか悩んだw
2020/03/23(月) 22:31:15.39ID:HqH2Bd5g
>>182
本屋いってみ?
スクラッチとパイソンだらけだ
あの状況はちょっとやばい気がするぞ
2020/03/23(月) 22:38:57.44ID:FCRLK915
供給過多で単価が下がるのはプロパー的にはありがたい
Pythonはコーディングスタイルを統制しやすいから低スキル層を束にして使うには向いてる
2020/03/23(月) 22:58:03.59ID:nO6Hkmtv
なんかJavaに似てきたな
2020/03/23(月) 23:43:21.26ID:1jGdZOlI
>>167
なるほどわかりやすいです
自分はゲームとか作ることはないので、
クラスにする必要性はなかったのか・・・
C#の初心者本とか見てるとクラスにしないといけないような脅迫観念があった
2020/03/23(月) 23:50:51.99ID:1jGdZOlI
>>181
配列は自分も考えたのですが、
今回は2つまでなの確定なんですよね

before, afterの頭文字とって
DF_B, DF_A
とかしたら訳わかんなくなるんだろうな
名前決めるのって難しい
2020/03/24(火) 00:02:33.99ID:IXy5V4dp
plt.plotで2つのグラフを順番に表示させると、
1名目のグラフのウインドウを閉じないと、2枚目のグラフのウインドウが表示されないのですが、
同時に表示させる方法ってないでしょうか?
2020/03/24(火) 00:45:33.00ID:LPFDXKjv
>>195
>低スキル層
で、超ゆとり教育を激受けて脳が未発達で実質知的障碍者に近いレベルの奴が
たむろしているのが俺らのこのスレだからな。
2020/03/24(火) 06:29:07.51ID:bL2MV1BQ
>>188
Ruby

だと本当は思ってるが
今はPythonなんだろうな
202デフォルトの名無しさん
垢版 |
2020/03/24(火) 13:10:59.54ID:JQ7YmFwi
>>199
https://qiita.com/gaku8/items/90167693f142ebb55a7d
2020/03/24(火) 15:11:22.50ID:BIkwDKwH
Pythonはプロの開発に使われることはまずない
開発以外に主眼が置かれている人工知能などは別として
プログラマの主戦場である業務系やWEB系ではまず使われない

自分自身でアイデアも実装も出すとこならPythonも可能性があるが
他者の依頼によって開発する場合にPythonが採用されることはない
204デフォルトの名無しさん
垢版 |
2020/03/24(火) 15:27:20.82ID:JQ7YmFwi
うそは遺憾
205デフォルトの名無しさん
垢版 |
2020/03/24(火) 15:28:42.83ID:2IImYa+R
Google「…」
2020/03/24(火) 16:49:53.35ID:PQNg46N/
>>203
プwww
典型的な日本のPGですね、君www
2020/03/24(火) 17:25:17.10ID:AhcKlC54
>>206
> PG
とは何?
2020/03/24(火) 17:25:50.45ID:lkiW86Z2
GoogleやNetflixやDropboxはプロでもWEB系でもはなかった…?
2020/03/24(火) 17:40:47.85ID:BIkwDKwH
>>208
WEB系とはWEB技術を使って業務システムを作ること
オープン系の対義語
またそれらの企業は「他者の依頼によって開発」ではなくて自社開発

>>206
日本だったらこれが常識だよね
COBOL、VB、Javaが職業プログラマの基本
さらに言うならOracle、SQLServer、DB2も習得していると望ましい
Pythonって要するに日本でいうBASICと同じ立ち位置
例えば最も普及しているBASICであるExcelVBAがいくら便利でもそれで基幹システムつくらないよねって話

GoogleだってPythonはタスク管理程度にしか使ってない
大事なところは別言語(時代によって採用言語は変わるがPythonではない)

あと、よく言われるけどPepperもPythonじゃないからな
あれはユーザー側が簡易に制御できる言語としてPythonを採用してるだけだ
2020/03/24(火) 18:11:00.45ID:AIaPjsf6
>例えば最も普及しているBASICであるExcelVBAがいくら便利でもそれで基幹システムつくらないよねって話

これでド素人ということが分かった
2020/03/24(火) 18:23:40.38ID:vOY7KxyH
基幹システムといえるかどうか微妙だが
情報システム部門で日報作るのにExcelマクロ必須だったな
2020/03/24(火) 18:25:36.41ID:X05gwniq
ExcelVBAで基幹システムって
作らないのではなく作れないし
2020/03/24(火) 18:43:36.81ID:nAY9Fr3h
>>212
お前も210から見ればただのド素人
実は僕もなんですけど
2020/03/24(火) 19:37:14.98ID:KtfI6cNR
>>209
>Oracle、SQLServer、DB2も習得していると望ましい
ちょっと古いのでは?
今は postgreSQL
2020/03/24(火) 19:44:33.29ID:UmmDZ9z0
>>212
作れない?
高くつくから作らないだけだろ
コストと日程くれるなら作るよ
2020/03/24(火) 20:48:40.01ID:uDM2IrFv
ガチればストアドプロシージャだけでも基幹システムは作れるゾ
217デフォルトの名無しさん
垢版 |
2020/03/24(火) 21:18:52.66ID:PjM8J8DG
12345678みたいな入力を\x78\x56\x34\x12に変換するライブラリってありませんか?

もしくは今そんな感じの自作モジュールを作ろうとしてて、
/usr/bin/mymodule/
以下にchange.py、その中に入れる関数の方のchange(s)まではできたんですが
from mymodule import change
change.change(s)
と毎回関数changeを呼び出す為に2回書かなきゃいけないのが気に入らないので
この関数changeを一発でimportする方法を教えてください
ワンライナーでも多用する予定なので、できる限りタイピングする文字数を小さくしたいんです
2020/03/24(火) 22:55:36.92ID:UBy3gEYu
>>211
全然微妙じゃなくて吹いたわw

Excel VBAで基幹システムって言ってるやつは
UI部分にExcelとVBAを使ってるって話だろ
2020/03/24(火) 23:05:47.62ID:AhcKlC54
>>217
#include <time.h>
t = time();
などと2行書くものだと信じていたので、質問に驚きました。
220デフォルトの名無しさん
垢版 |
2020/03/24(火) 23:16:28.47ID:PjM8J8DG
>>219
あ、すみません後半のchange.change(s)みたいにファイル名と関数名を
一々書かなきゃいけない方が嫌なだけで、一行目のimportは当然OKです
python -c "import change(もしくはfrom 〇〇 import change);change(s)"
みたいな感じの物を実現したいです。
2020/03/24(火) 23:36:57.77ID:LPFDXKjv
いまやPythonは基幹システムに使われるメジャー言語になっているから
職業プログラマが必死にPythonをやっているからな
2020/03/24(火) 23:38:03.58ID:UBy3gEYu
>>217
$ touch /usr/bin/mymodule/__init__.py

from mymodule.change import change

https://docs.python.org/3/tutorial/modules.html#packages
223デフォルトの名無しさん
垢版 |
2020/03/25(水) 01:43:26.05ID:E7HPnXVD
>>222
ありがとうございます!
importのやり方普通のやつとfrom ~ import ~しか分かってませんでした、反省します
224デフォルトの名無しさん
垢版 |
2020/03/25(水) 03:28:12.51ID:BoSHYqnZ
自分の周りでは少なくとも、治自体関係、医療関係(レセプト、電子カルテ等)、
運送・運輸関係の基幹システムをPythonで構築しているという話は聞いた事
がない。コールセンター(CTI、IVR等)関係のシステムをPythonで構築している
という話も聞いた事がない。

基幹システムをPythonで構築ではなく、基幹システムの一部の機能にPythonが
使われている場合があるという事なのか。

それとも情報系システムと勘違いしているのか。
225デフォルトの名無しさん
垢版 |
2020/03/25(水) 03:36:55.77ID:BoSHYqnZ
基幹系システムと情報系システムの違い
https://www.hitachi-solutions-create.co.jp/column/core-system/basic-information.html
2020/03/25(水) 06:18:41.64ID:D6nq+1Z6
フレッシュなニンニクジュースを飲めばコロナ菌は死滅する!
2020/03/25(水) 09:58:04.82ID:oItmf4ur
スレ違いの上エビデンスなしはNG
2020/03/25(水) 10:51:24.12ID:u29o72QF
ニンニクジュースの話はスレチだな
2020/03/25(水) 12:02:43.15ID:nfUzvxHY
COBOL、VB、Javaが、多重請負構造・奴隷土方プログラマの基本w

銀行側が払う料金
時給5千円 * 180時間 = 1人月90万円

その内、本人は20〜30万円ぐらいもらう。
その差額、60万円分で、数社の会社が成立できる仕組み

その60万円を多重請負構造で分ける

例えば、元請けのIBM(5大ITer)が30万円とって、
1次受けの上場企業が20万円とって、
2次受けの中小企業が10万円とって、みたいな土建業と同じの多重請負構造

就職面接へ行くと、1〜3次受けの会社員が皆来てるw
1次受けが雇うというと、2次も雇う、3次も雇うとなるw

奴隷売買業w
女衒みたいなものw

GitHub・Ruby みたいな自社サービス系とは全く違う!
学校で教えるのは、就職率が高い、Ruby ばっかりw

自社サービス系の方が、会社の倒産リスクは高いけど、
中間会社に抜かれないから、給料が高い
230229
垢版 |
2020/03/25(水) 12:06:10.38ID:nfUzvxHY
それに銀行系は、システム更新時期が過ぎたから、仕事が無くなったw
2020/03/25(水) 12:17:37.23ID:KDJCx941
プロは複数言語使えるのが当たり前なんだからPythonが基幹システムに使われようが使われなかろうがどうでもいいだろ。
言語の特性上向いてない目的を挙げて特定の言語をdisすることになんの意味があるのかわからん。

他言語のコード書いてるときでも、データ変換やある程度決まりきったコードなんかはPythonで生成したりしてるが便利だよ。他言語で書いたアルゴリズムが間違ってないかの検証なんかにも使えるし。
2020/03/25(水) 12:46:54.20ID:qvXjJ9lz
生成や検証ってpython以外のP言語でも出来るんじゃねえの
2020/03/25(水) 14:06:06.27ID:nfUzvxHY
Haxe は、JavaScript, C++, C#, Java, JVM, Python, Lua, PHP, Flash に変換できる
234デフォルトの名無しさん
垢版 |
2020/03/25(水) 16:52:47.61ID:6ULKuSqz
>>217

>>> binascii.a2b_hex('12345678')
b'\x124Vx'
>>> list(reversed(binascii.a2b_hex('12345678')))
[120, 86, 52, 18]
>>> bytes(reversed(binascii.a2b_hex('12345678')))
b'xV4\x12'
2020/03/25(水) 19:56:42.27ID:mIdHRgzi
>>217
structパッケージかな

from struct import pack
pack('<I', int('12345678', 16))

長いというならラムダ式でも使って
change = lambda s: pack('<I', int(s, 16))
と定義すれば
change('12345678')
で使える
236デフォルトの名無しさん
垢版 |
2020/03/25(水) 20:53:06.37ID:E7HPnXVD
>>234
>>235
ありがとうございます、ただやりたいのは入力数値をそのまま\x78\x56……
みたいな方式に変えたいことで16進数に変換されるとちょっと不都合が
セキュリティ本のシェルコード挿入でそういう入力多かったので作ろうと思ったんですが
もしかして普通は上みたいな入力使う機会ないんですかね?
237デフォルトの名無しさん
垢版 |
2020/03/25(水) 20:59:06.96ID:i/r3a70w
ごめん何言ってるか判らないω
2020/03/25(水) 21:11:26.87ID:mIdHRgzi
>>236
\x78
は16進数で78のことを表している

16進数であることを明確にするにはH'78と記述する
プログラムでは0x78と書く

\x78\x56...みたいな16進バイト列を作りたいんだけど、16進数にされるとちょっと困る、と言われても、こっちも困る
2020/03/25(水) 21:19:52.75ID:XgBtMRgR
要するにchange.change(s)って毎回書くのだるいからchange(s)って書くにはどうすればいいかってこと?
2020/03/25(水) 21:21:00.60ID:E7HPnXVD
https://dotup.org/uploda/dotup.org2096094.png.html
画像はbashですがこんな感じでAAAA\x78\x56……という文字列を出力したいんです。
って言おうとしてたんですがすみません、これの出力が
AAAAAAAAAA\x78\x56\x34\x12
になるとずっと思っていたんですが、嫌な予感がしたので今確かめたら
AAAAAAAAAAxV4
になってました
つまり>>234の方と>>235の方のやり方が求めていた者です、ありがとうございます。
初心者の勘違いでお騒がせをしてスレを汚してしまい申し訳ありませんでした……orz
2020/03/25(水) 22:46:13.13ID:mIdHRgzi
>>240
プログラムに組み込んでパイプで渡したいだけなら何もする必要はない

python -c "import sys; sys.stdout.write('AA\x12\x34')" | hexdump -C
結果
00000000 41 41 12 34 |AA.4|

コマンドライン引数でこの文字列を受け取った上で別のプログラムに渡す場合は、自分で作らないとない

python -c "import sys; sys.stdout.write(sys.argv[1])" "AA\x12\x34" | hexdump -C
結果
00000000 41 41 5c 78 31 32 5c 78 33 34 |AA\x12\x34|

\x12がH'12の1バイトではなく、H'5c783132の4バイトとして評価される
2020/03/26(木) 21:17:50.96ID:jt2f7/Y4
def file_open():
data_path = fd.askopenfilename(
title="ファイルを選んでください",
filetypes=[("TEXT", "csv"), ("TEXT", "py"), ("HTML", "html")]
)

def main():
a=input()
if a!='1':
file_open()

を実行すると、VS CODEのウインドウの下に非アクティブでファイル選択ウインドウが立ち上がります。
ファイル選択ウインドウを再前側でアクティブウインドウとして立ち上げたいのですがどうすればいいのでしょう?
2020/03/26(木) 21:45:03.06ID:jt2f7/Y4
if文ぬいて

def file_open():
data_path = fd.askopenfilename(
title="ファイルを選んでください",
filetypes=[("TEXT", "csv"), ("TEXT", "py"), ("HTML", "html")]
)

def main():
file_open()

とするとファイル選択ウインドウが最前面にきてアクティブになるんですよね
なんでだろう
2020/03/26(木) 21:49:37.79ID:jt2f7/Y4
ああ、なんとなくわかってきました
input()
を使うと、VS CODEが最前面でアクティブのままロックされて、
そのウインドウの裏でファイル選択ウインドウが開くみたい

input()を使ってこの現象をさける方法ってありませんか?
2020/03/26(木) 22:02:56.82ID:jt2f7/Y4
連投すいません
data_path = fd.askopenfilename(
title="ファイルを選んでください",
filetypes=[("TEXT", "csv"), ("TEXT", "py"), ("HTML", "html")]
)
でファイルを開くときに、選択ウインドウを常にアクティブにする設定があれば教えて下さい

というのが、正しい質問でした
ご存知の方いらっしゃいましたら教えて下さい
2020/03/27(金) 01:28:39.52ID:DFFADnRu
>>245
fd ってのが from tkinter import filedialog as fd なら
tkinter で topmost を指定してあげれば良いんじゃないかな?
https://teratail.com/questions/145112
2020/03/27(金) 23:36:36.81ID:wFQ5Bfhf
>>246

解決しました!!!
ありがとうございます

もうわからないから、
print('この画面を最小化してね’)
とでもしようかと思ってたw
248デフォルトの名無しさん
垢版 |
2020/03/28(土) 22:27:12.81ID:BYkjXtO6
初歩的な質問ですみません。Colaboratory を使ってスクレイピング行っておりURLのみを表示させたいので
get使ったのですがAttributeErrorになってしまいます。
getを使わずa_tagsだけ入力するとエラーにならずに表示されます。
getが使えないのは何が原因なのでしょうか?

import requests
from bs4 import BeautifulSoup

page_url ="https://news.yahoo.co.jp/topics/top-picks";
r = requests.get(page_url)

soup = BeautifulSoup(r.text, features="html.parser")


a_tags = soup.find_all("a", class_="newsFeed_item_link")

a_tags.get("href")
2020/03/28(土) 22:48:46.72ID:+WXFsbEZ
>>248
a_tagsはlistだから
listの各要素に対してget(‘href’)する必要がある
2020/03/29(日) 05:29:29.33ID:8xENdWjm
>>248
Ruby, selenium-webdriver, nokogiri で作ったが、href を取得しようとすると、エラーになる。
sleep 15 して待っても、エラーのまま

要素は存在するけど、JavaScript で動的に、href を作っているのかも。
他から取得するか、クリックするなど、何かアクションを起こせば、作られるのかも

require "selenium-webdriver"
require "nokogiri"

options = Selenium::WebDriver::Chrome::Options.new
driver = Selenium::WebDriver.for :chrome, options: options

driver.navigate.to "http://news.yahoo.co.jp/topics/top-picks";

doc = Nokogiri::HTML( driver.page_source )

css_selector = "a.newsFeed_item_link"
elements = driver.find_elements( :css, css_selector )

results = elements.map { |elem| elem.attr( "href" ) }
puts results

driver.quit
251250
垢版 |
2020/03/29(日) 09:52:13.78ID:8xENdWjm
>>250
は、nokogiri を使わず(doc という変数を使っていなかった)、
selenium-webdriver から取得していたので、

それを、20秒スリープして、nokogiriから取得するように変えたら、25個のhref を取得できた!

require "selenium-webdriver"
require "nokogiri"

options = Selenium::WebDriver::Chrome::Options.new

driver = Selenium::WebDriver.for :chrome, options: options
driver.navigate.to "http://news.yahoo.co.jp/topics/top-picks";

sleep 20

doc = Nokogiri::HTML( driver.page_source )

css_selector = "a.newsFeed_item_link"
elements = doc.css( css_selector )

results = elements.map { |elem| elem.attr( "href" ) }
puts results.length, results

出力、以下が25個
https://news.yahoo.co.jp/pickup/6355533
https://news.yahoo.co.jp/pickup/6355534
252デフォルトの名無しさん
垢版 |
2020/03/29(日) 12:43:01.48ID:4hib/jR0
すいません、ちょっと教えてもらいたいのですが
for x in ...
とかで文字を使っちゃうとまた次のforのときに
またx使うか迷うんですけどどうしてますか?
iみたいに毎回同じ文字使ってますか???
特に短いforがいくつもあるときに悩みます
2020/03/29(日) 12:53:10.19ID:TGQjvlT6
>>252
入れ子になってる等やむをえない事情がないのなら、
新たな文字など使わずに
むしろ
どんどんxなりiなりを再利用したまへ。

「どーでもいい?forループ回すときはいつもiな!」みたいな
俺ルールの徹底は
後日メリットばっかりだぞ。
2020/03/29(日) 13:48:18.09ID:hrvcX8VW
>>252
ループ変数としてしか使わない前提なら可
ループ変数を他の用途に使い回すのは不可
2020/03/29(日) 15:12:01.71ID:QD9LV+eK
ループ内のネストなら昔からi,j,kやな
2020/03/29(日) 15:31:33.32ID:a0L6N7lT
>>254
そのルールでチェックできるlinterってない?

ループの外では使うのは気持ち悪いからやらないけど
セーフガードは持っておきたい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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