くだすれPython(超初心者用) その38
■ このスレッドは過去ログ倉庫に格納されています
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その37
http://mevius.5ch.net/test/read.cgi/tech/1521271945/ PythonのIDLEの画面をクリアすることってできますか? Ruby では、--headless オプション
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
driver = Selenium::WebDriver.for(:chrome, options: options)
driver.navigate.to "ここにURL" >>239
python2でもpython3でも動きませんでした。
他の方お願いします >>209
俺と同じ感想の人が居てた、python大好き やりたいことに集中できるのがPythonの良さなのは同意するけど、便利な既製のデータ構造なんか他の言語にもだいたい用意されてるだろ
Pythonは文法がシンプルで記述の自由度が低く、変な例外的な仕様も少ないから、
どの書き方が美しいかなどというくだらないことをあまり考えなくていいんだよ
その結果、やりたいことに集中できる 1円硬貨: 8 枚
5円硬貨: 3 枚
10円硬貨: 2 枚
50円硬貨: 2 枚
100円硬貨: 3 枚
↑の硬貨のセットを持っているとする。
これらの硬貨を使って支払える金額のうち、その支払いに使える硬貨の組合せが
一通りしかないものの数を求めよ。
これを計算するためのプログラムを作ったのですが、正しい答えが出ません。
どこが間違っているのでしょうか?
http://codepad.org/Hyc8E6HM >>243
Cの話してるところにC++の話題持ち込むと混乱するからやめて プログラミング全くの初心者なのですが、beautiful soupというのを学ぶのに一番適している本やWebサイトってどれでしょうか? >>245
俺には関数部分のコードが正しいのかはわからんのだが、
paysに0が含まれてるからとかってオチじゃないの? とりあえずPythonによるWebスクレイピングという本買って勉強してみます jQuery, Ruby のNokogiri の、CSS セレクターを参照。
XPath よりも良い
なでしこの作者、クジラ飛行机の本は、難しいのか jythonみたいなやつでpython3のはありますか? >>263
pypyってやつを使えばpython3とjavaを一緒に使えるんですか? 楽観的な解釈をするならばYes
質問者のレベルに合わせて考えるならNo Anacondaからjupyter notebookを立ち上げてプログラムを起動するとno module named intertoolsというエラーが出ます
中身を確認したり何度かプログラムを動かしていると動作します
数分前まで動いていたプログラムでさえ立ち上げ直後は上記のエラー発生するのですが同様のケースを経験された方はいらっしゃいますか? 指定した値が入っているリスト番地を返すindexって命令がありますけど
あれの正規表現版みたいなのはないですか? idx = next(i for i, v in enumerate(hogelist) if re.search(r"hage", v))
こういう事言ってるのかと思った >>272-273
目的を解決する標準関数はないけど
そのやり方を参考に自作関数を作ればいいわけですね
分かりました。ありがとうございます 2,3分で書くと、こんなもんかな。
import re
s = "012abc345def"
m = re.findall(r'[a-z]', s)
for i in m:print(i,re.search(i,s).span()) できてないんじゃない?
50+10+10+1+1=72
50+10+5+5+1+1=72
50+5+5+5+1+1+1+1+1+1+1=72
etc.. 71通りになった
問題の解釈を間違ってなければだけど スクレイピングしたら
requests.exceptions.ConnectionErrorがでて
「既存の接続はリモート ホストに強制的に切断されました」って表示されたんだけど
これ相手から弾かれたってことですよね
time.sleep(10) に入れてたんだけど少ないですかね。 サイトによるだろ。株やFXならともかく、普通のサイトだと気が狂ってるとしか思えんフェッチする連中がいるし。 denyされていなくてもサーバーが高負荷になってれば普通に出る
denyされてるのか単なるエラーなのかは切断の傾向から推測するしかない
それなしに、ただ切断されましたと言われても分かんないね >>281
>>282
ありがとう。
もしよければその単語の意味を確認させてほしい。
フェッチ=データを取り出すこと
deny= 拒否する 否定する など 接続を弾く場合、一般的にはファイヤーウォールやhttpdの機能を使う
それの設定の定番がallow-deny形式のルール
denyされた=ファイヤーウォールやhttpdで接続を拒否するように設定された
と考えて >>285
ありがとう。止まったのは夜中だから機械的にアクセス拒否されたと考えてます。
timesleepの秒数をもっと長くして、あとrondomと組み合わせて、同じ時間感覚でアクセスするのやめるて様子みてみます。 初歩的な対処法なら
同じIPアドレスからのアクセスの間隔が常にほぼ同じ秒数間隔の変更
同じIPアドレスから、同じユーザーエージェントで大量にアクセス IP変更で対処
人間らしくないきっちりしすぎるアクセス *1
何度もアクセスしてきているのに、セッションクッキーを絶対に送ってこない
__CookieはWEBサーバーが発行し、ブラウザが保持するキーと値
__セッションはWEBサーバーで保持するキーと値
確認方法
C:\Users\(ユーザー名)\AppData\Roaming\Microsoft\Windows\Cookies
ブラウザのアドレス欄に____javascript:document.cookie;
リファラーがまったくない ココは調べてる必要がある
*1
__HTMLだけにアクセスしてJavaScriptやCSS、画像にまったくアクセスしていない
注意:画像だけにアクセスしても同様に対処される それこそ人工知能で人間っぽくみせるプログラムとかを作ってほしいですよね。 いくつかの書式形式から、HTML構造を頻繁に変えられると
もう、維持の張り合い
そんなサイトに出くわした事はない。けどなーw >>288
python関係ないけど、
費用掛かって良いなら、
___RPAのトリガーを使う
試した事ないから、無理かもしれない。+時間が膨大にかかる >>287
とても参考になります。
>同じIPアドレスからのアクセスの間隔が常にほぼ同じ秒数間隔の変更
やりました。今のところこれだけで大丈夫そうです。
>同じIPアドレスから、同じユーザーエージェントで大量にアクセス IP変更で対処
調べたらやり方がでてきたので、検討します。
>人間らしくないきっちりしすぎるアクセス *1
わかりました。覚えておきます。
>C:\Users\(ユーザー名)\AppData\Roaming\Microsoft\Windows\Cookies
Appdateというフォルダがなく、C:\Users\(ユーザー名)、までしか一致しなかったです。
Cドライブ指定で「Cookies」で検索しましたが、これに関係ありそうなファイルにはたどり着けませんでした。
こちらwin10(64)です。
>ブラウザのアドレス欄に____javascript:document.cookie;
やりました。なんか文字いっぱい出てきました。
>リファラーがまったくない ココは調べてる必要がある
検索結果のURLに直接アクセスしてるので、TOPの検索経由でスクレイピングする方法も試してみます。 >>291
おめでとう。
こっちはURLまで取得できるけど、保存だと弾かれて苦戦中
試しにIPとブラウザ偽装でも、ダメだった。
諦めて、PyAutoGUIでキーボードでブラウザ操作に切り替え用か迷ってる。 質問です。
こんなふうなスクリプトを書いています。
https://pastebin.com/0KKDbGnp
68〜75行目で変数に関数を代入していますが、77〜78行目をコメントアウトしてあるので何も動かないと思うんですが、実際には6行目の関数が動いてprint(〜)とinput()が求められてしまいます。
なぜ動くんでしょうか? >>293
68行目が実行されて、
get_service_id() が実行されているからでは。
むしろ、なんで77-78行目をコメントアウトすると、何も実行されないはずと考えたのかが理解不能。 68行目でget_service_idを実行してるから。
関数の代入ではなく関数の評価結果の代入になってる。
だからget_service_id関数はそこで評価(実行)され、そこでinput求められてる。 >>294
>>295
どうもありがとうございます。
変数には関数を代入したのでは無く、関数の処理結果を代入した場合は、77-78の有無にかかわらず68行目の時点で実行されてしまうんですね。
77や78を動かした時のみ上の関数が動くようにするにはどんな方法がありますか? え、ifも分からないとかそういうレベルなの
ifは分かるの?どう? if文は分かりますが、この場合どうやって使うんでしょうか? >>297
なんでいちいち煽るのスレタイ読めないの ifで77に必要なコードと78に必要なコードに分けろ
普通の頭ならそうする
>77や78を動かした時のみ上の関数が動くようにするにはどんな方法がありますか?
変数を一切使わなければいい
あのコードだと読み辛すぎて普通の頭ならやらない >>300
どうもありがとうございます
ifの使い方、変数を使わない方法を考えてみます スクレイピングに挑戦してるんだど
503や404のHTTPerror別に処理を分ける方法ってありますか?
503の時は動作停止
404の時は動作続行
としたいんだけど…
検索してもさっぱり手掛かり掴めないので、
方法としてあるかどうかだけでも知りたいです。 >>304補足です。
スクレイピング対象のURLは複数あって、
コード内のURL(途中まで)と、txtファイルから読み込んだパラメータを組み合わせて完成URLを生成してます。 プログラミングもやったことないんですが、いきなりpythonの入門書をやっていいのでしょうか? それともPCの入門書みたいな本を先にやるべきでしょうか? >>305
まずは自分の書いたコード貼れよと
このスレで以前マジ叱責されたわ スクレイピングとapiについての質問なのですが
セキュリティ関連のあるサイトから検索し、結果を取得したいのですが提供されているapiがリクエスト上限が分間数件とかです…
もう少し効率よく取得したいのですがスクレイピングならこういう制限なく自由に取っていって良いんでしょうか?
robots.txtは確認しましたがdelayの項目は無く制限された階層?からの取得はありません。 >>306
まずPythonをやる動機はあるのかい?
システムを外注する金がないからお前作れと上司から無茶振りされたとか、
学校の課題で出されたとか、具体的な動機がないとプログラミングは身につかない
ただやってみたいってだけで身に付くのは好奇心旺盛で頭が柔軟な子供のみ >>310
>ただやってみたいってだけで身に付くのは好奇心旺盛で頭が柔軟な子供のみ
子供は子供相応のやさしい課題をやるから「やってみたい」だけで身につく、という面があるのだろうね
プログラミングは複雑だし、単に覚えるだけではなく創る面もあるから、継続してモチベーションを維持しないといけない
モチベーションの維持ってどうすればいいのかな? >>309
日本では悪しき前例があるから「どこまでならやっていいのか」に関しては部外者はなにも保証できない
そのサイトにルールが記載されてないなら運営に直接に尋ねるのが正解
尋ねた上でやるなと言われたら素直に諦めてAPIを使う
ビジネス上のメリットを提示して交渉できるなら希望はあるけど個人じゃ難しいよ >>312
ありがとう
英語のサイトで尋ねるのも大変ですし、この作業自体が隣の席の人がダルそうにチェックしてるから
どうにか出来ないかな レベルの話だからAPIで簡単に実装してみます
遅いダルいとか言い出したら昔の事件の存在とか少し伝えてそれでも欲しがったらスクレイピングしてみます改めてありがとう >>308
すみません。質問用に同様の動作をするコードを作りました。下記コードを元に何らかの助言が頂ければと思います。
urllistは質問用に設定したヤフーニュースの記事です。現状だと「res.raise_for_status()」が記述されているため、2つめの記事「〜pickup/9999999」の読み取り時に404エラーが出て処理が停止します。
エラーコードは 〜 requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://news.yahoo.co.jp/pickup/9999999 〜 です。
実現したいことは、404エラーの時は停止せず、次のURL読み込みに進んでほしいのです。ただし、503エラーの時は、停止させたいと思っています。
res.raise_for_status()を消せば処理は進みますが、503の時もアクセスし続けてしまうことが課題です。
----------
import requests, bs4
import csv
urllist1 = [
'https://news.yahoo.co.jp/pickup/6287442',
'https://news.yahoo.co.jp/pickup/9999999',
'https://news.yahoo.co.jp/pickup/6287380',
]
with open('news.csv', 'w', encoding='CP932', errors='ignore') as f:
for urllist in urllist1:
res = requests.get(urllist)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "html.parser")
elems = soup.select('h2')
for elem in elems:
print(elem)
writer = csv.writer(f)
writer.writerows(elems)
---------- >>310
文系の大学生で、暇なのでやってみたいと思いました… >>315
文系なら英語できる?
codecademyとかやってみたら、
わからん単語調べながら
環境構築も要らんし >>315
正直何に困ってるのか掴みかねますが
PCの入門本かpython入門本で迷うと言うことは基本的なPC知識が足りないと言うことでしょうか
自分で問題無く環境構築など進めるかと言った疑問でしょうか。
どちらにしても暇を持て余しているのであればネットで調べて実際にやってみると出来る出来ない分からないなどがはっきりし
質問しやすくなったり書籍購入するにしてもどういう本が良いか検討しやすくなると思われます。 >>ID:2Vrp11he
そもそもPCをあまり使ったことがあまりないなら、まずはPCを使い倒すこと
その中で「一件片付けるのは簡単だけど、何百件単位で片付けなきゃいけないからやってられない」って作業を見つけたら
それをプログラムで解決してみればいい
あと、プログラムを覚える前段階として正規表現を覚えるといいよ
Webから情報をコピー→テキストエディタやエクセルに貼り付け→正規表現で整形
という作業を日常的によくやるようになったら、プログラムスキルも伸びやすいと思う >>314
for urllist in urllist1:
res = requests.get(urllist)
if res.status_code == 404:
# 何がしかの処理(必要なら)
continue # forに戻って次の処理に進む
res.raise_for_status() 最初っからわかるヤツなんていない。
「どっから手を付けていいのかわからない」が当たり前。そこで苦しんで覚えるかってのが分岐点だな。 >>319
ありがとうです!
ちょうどif文で調べてたところでした。
もっと勉強頑張ります! 環境構築とか正規表現とか用語が分からないけど、やっぱり暇を活かして自分で少しやってみます >>319
すみません、よく見たら出力された記事が一番下の「〜6287380」だけで、
一番上の「〜6287442」が取得できていませんでした。
解決方法もしわかりましたらご回答お願いします。 自己解決しました。
res.raise_for_status() 以下のインデントを間違えていました!
自己解決! まず学生は、cd, echo, cat とか、数十のLinux 基本コマンドから勉強する
謎のような呪文を覚えるって、皆言ってる c言語の構造体配列みたいなのはpythonでどうやればいいんですか? みたいなのではなく目的を言え
そんな聞き方をされても、同じものはPythonには無いとしか答えられん >>330
オブジェクト指向機能使えばいいのでは? >>332
アドバイス通りクラスとか配列とかいい感じにすればできそうです
ありがとうございました codeacademyって、Python3のコースってできたの?
それともまだ2だけ? ■ このスレッドは過去ログ倉庫に格納されています