Webスクレイピング(クローラ・スパイダー) [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
import requests
from bs4 import BeautifulSoup 5chスクレイピングしてみたらレスが増殖するんだけどなんで? 環境はvbaなんだけど
例えばこのスレをスクレイピングしたら>>15のレスが2個に増える
このスレで言うと全体で26個のレスになる
他のスレで酷いところなんか400レスぐらいしかないのに取得レス数が1000レス超えたりする
どうなってんだ・・・ 価格コムの商品一覧↓
https://kakaku.com/specsearch/0010/
ここの下のページネーションをクリックする方法ってどうやればできますか? javascriptを読み解こう!
例えば3ページ目
<a href="javascript:void(0)" onclick="return page('3');">3</a>
page('3')って関数にバインドされてるね。で、page関数を検索すると
function page(page_number){
document.specForm.Page.value = page_number;
document.specForm.ButtonType.value = "D"
document.specForm.submit();
return false;
}
formにあるhidden属性 Page=3, ButtonType=D がセットされて検索ボタンが押されて(submit)、postされる。すると3ページ目が得られる。 >>28
ありがとうございます、解説のおかげでできました!
vbaでもjavascriptつかえるのも発見でした!
page('3')が関数だなんて思いもしませんでした。
ずっと3をクリックするにはどうすればいいかがんばってましたw Dim ie As InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate ("https://kakaku.com/specsearch/0010/")
ie.Visible = True
Call wait(ie)
Application.wait (Now + TimeValue("0:00:01"))
Dim doc As HTMLDocument
Dim formel As HTMLFormElement
Dim sle As HTMLSelectElement
Set doc = ie.document
Set sle = doc.getElementsByName("OS").Item
Set formel = doc.getElementById("spec_search").all.Item(0)
sle.Value = 12
formel.submit
↑価格コムでパソコンをOSwin7で絞り込むコード
ここまで絞り込むのに10時間ぐらいかかってしまった・・・
formエレメントがspecFormで簡単に操作できれば楽勝だったんだけどそれができなくて四苦八苦しました。
教えていただいたjavascriptのコードにもspecForm.submit()でかかれてるから楽勝だと思ったのに。
なんか楽な方法無いですかね。。。これ使うと構文分析がらくだよって言うツールあったら教えてほしいです。 webブラウザで調べたい要素の上にポインター置いて右クリックしたら
要素を調査とか検証とかみたいな項目があるだろう
それ使うのが一番手っ取り早いんじゃないかな 最近のjavascriptやajax使いまくりのサイトのスクレイピングってselenium使う以外の方法ってある? 定期的に更新されるJSONデータをScrapyでパースしてItemリストを作るような場合に、
以前のジョブですでに作成済みのItemはスキップするみたいなことは、どうやってやるのが良いんでしょう?
クロール済みのリンクを再度クロールしないようにするのとかは、JOBDIR指定すればうまいことスキップしてくれるんだけど、
https://docs.scrapy.org/en/latest/topics/jobs.html
クロールをスキップするんじゃなくて、生成済みItemの新規作成をスキップするスマートなやり方ってあるのかしら?
今のところ、Item PipelineでMongoDBにItemを格納するようにして、DBにItemをinsertする時にDuplicateKeyErrorでDropItemさせてるんだけど、ドロップさせないようにするとしたら、いちいちDBを読んで格納済みだったらItemを作成しないみたいにするしかないですか?
毎回DBを読みにいくのは重そうなので、とりあえず今はDBに入れる時点で重複エラーを起こさせてドロップしてるんだけど、なんかスマートじゃないですよね? あなたのワークシートがインターネットにつながる Excel VBAでクローリング&スクレイピング
って本を買おうと思ってパラパラって中身見てみたら、IE使うことになってんだよね
IEってもうオワコンなのに IEの更新がストップしたらEdgeが使えるようになるのかしら >>16 >>17
そんなんプログラミング自体は簡単だけど
うまく生かすのは難しいって何でも当てはまるじゃん phantom.jsも開発中止か
GUIなしでインストールできるヘッドレスブラウザはないもんか >>17
Pingaがなくなっちゃったからその代替はどう GASでスクレイピングしてるんだけど、3秒に1回のアクセスでもまたに遮断される
1時間に1度動くようにトリガーセットしてるのはまずいのかねえ >>41
アクセス先によるとしか
きっちり3秒に1回にしてるなら、ランダムな間隔にしてみたら? 例えば5chで何らかの理由であぼーんされてレスが削除される事ってあるじゃん?
その対策で新しいレスがつくたびに自動で保存とかってできる? >>41
相手のサイトが、頻繁にアクセスしてくる、IP アドレスを拒絶する機能を設定してる
>>43
頻繁にアクセスすると、そのIP アドレスを拒絶してくるのでは?
ひょっとしたら、営業妨害で刑事告訴してくるかもw
5ch では契約者だけに、API を公開してる。
契約していないと使えない 1分間に何回もアクセスしてる人なんてザラにいると思うけどその辺はどう? 各サイトは、robots.txt を置いて、
クローラーに対して、クロールする方法を宣言する
クローラーはそれに従わないと、業務妨害罪となる
実店舗と同じ。
お店は、その店の規則に従わない客を追い出せる。
それでも客が出ていかなければ、警察を呼んで逮捕できる
お店は、革ジャン・サングラス・ヘルメット・刺青の客などを追い出せる >>46
ネタかもだけど、robots.txtに従わないからといって罰せられる法律はないよ
librahackみたいな例もrobots.txtに違反したからではなくシステムへの負荷の問題(あれはそもそもシステム側の不備だけど) 大量の中国からのDos 攻撃なんか、国内からだと、確実に業務妨害で有罪になる
だから日本の司法権が及ばない、国外から実行する。
犯罪者が国外にいる場合、日本の裁判では有罪にできないから
ゴーンがそうw
裁判すら開けないw >>51
星野ロミはそういう問題ではない
彼は漫画村というサイトで漫画を違法アップロードしていた ガチな初心者がmacにbeautifulsoup4をインスコした後につまずいている
プログラマーの人ってオライリーの「PythonによるWebスクレイピング」読めば簡単にできちゃうもんなの?
Webの知識も必要だなこれ・・ >>54
うん、簡単にできるよ
まあ、読まなくてもできるけど スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります 5chって専ブラ目的以外のデータ収集でもスクレイピングあかんの?利用規約読むと専ブラはあかんよって感じに見えるけど他が分からん webで公開してる情報なら完全な対策は無理よ
どうしてもというなら公開しないことだねw この板で質問するレベルのやつには対策を越えられないので同じ事 WebスクとかRPAとかUIAutomationとか、よくそんなもん思いついたよな。
デジタルなんだから、ウインドウ非表示でデータ取れるようにしろよって思うわ。 ■ このスレッドは過去ログ倉庫に格納されています