爬虫実習のまとめ
1966 ワード
この2,3日実習を探して、名目はpythonエンジニアで、実は爬虫類+を書いてdjangoに統合します.実習はとても奇抜で、まだ試用期間があって、今試用期間が過ぎて後続の手配を待って、ちょうどこの数日爬虫類を書くいくつかの心得を整理します.
まず、爬虫類を書くのは本当に経験的な仕事だと感じて、普通のウェブサイトははっきり言ってrequestの中でパラメータを試し続けます.直接登ってはいけませんheaders=やってみて、提出したフォームがあるのを見てdata=やってみます.ここで区別するのはPOSTメソッドに対応するFormDataであり,requestのdataパラメータで実現できる.
GETメソッドはQuery String Parametersに対応しており,urlをつなぎ合わせる方法が一般的である.
フォームを提出する内容は何なのか、自分でhtmlのラベルやjsの関数を見て知る必要があります.一般的にhtmlのソースコードで検索することができます.商品idかもしれません.ページの相対経路の一部かもしれません.時間と関係があるかもしれません.もちろん、サイトに登って提出したフォームは暗号化されています.本当に解読するには推測と試しが必要です.
その後、シミュレーションログインが必要なサイトについては、認証コードを必要としない場合は、上記のGETとPOSTフォームを利用すれば解決できるはずですが、cookiesを提供する必要があるサイトもあります.この場合、requestにはcookiesパラメータが含まれます.
認証コードの登録が必要なサイトについては、まずログインし、ログイン後のcookiesをコピーして、ログイン後の状態を真似することも考えられますが、必ずしも成功するとは限りません.
ここまで言うと、前に学校のエネルギーサイトに登って電気代を調べたとき、非登録機能もcookiesを提供しなければ応答できなかったことをふと思い出します.フレームワークと関係があるのか分かりませんが、なんだかいろいろなことがありました.
最后に言いたいのは、前に登れないサイトに出会って、phantomjs+seleniumを使いたいと思っていましたが、理论的にはこの方法では登れないサイトはないような気がしますが、実习の时にはだめな状况に遭遇して、今もなぜか分かりません.しかし、事件はともかく、phantomjsは使いやすいが、今ではますますカンニングと同じように感じている.ブラウザだからだ.個人的に少量のデータを登るのはいいですが、ビジネス用の大量のデータrequestを登るのが正しいです.結局phantomjsを使うのはブラウザを直接使うよりも効率が高くてどこにも行けません.
とにかくheadersでもdataでもcookiesでも、爬虫類の真髄はできるだけリアルブラウザの登録過程を真似することです(live董偉明が大いに話していることを知っていますが)、捕まえたバッグにはそんなに多くのパラメータが入っていて、完全に入れる必要はありません.具体的にどのパラメータを使うと効果が出るかは、本当に経験に頼らなければなりません.何度も繰り返す逆登りの方法があるそうです.前回は次のリクエストを含むパラメータを受け入れましたが、このようなループはまだ登ったことがないので、断言できません.
最后にこの実习にツッコミを入れたいです.悪いボス(态度が悪いのか分からないのに顽固です)、幼い开発チーム(本当に仕事をしているのは2人の学生、1人の异郷の组长、1人の半人前の私...)、混乱したコード管理(開発者は実習学生で、交代が頻繁で、コードスタイルが異なり、可読性健全性のモジュール化が悪い).会社が留任してくれるかどうかはおろか、自分でもやりたくないが、これが貴重な最初のIT実習だと思うと、諦めたくない、いや、いや.
ここまで言うと、前に学校のエネルギーサイトに登って電気代を調べたとき、非登録機能もcookiesを提供しなければ応答できなかったことをふと思い出します.フレームワークと関係があるのか分かりませんが、なんだかいろいろなことがありました.
まず、爬虫類を書くのは本当に経験的な仕事だと感じて、普通のウェブサイトははっきり言ってrequestの中でパラメータを試し続けます.直接登ってはいけませんheaders=やってみて、提出したフォームがあるのを見てdata=やってみます.ここで区別するのはPOSTメソッドに対応するFormDataであり,requestのdataパラメータで実現できる.
request.post(data=data)
GETメソッドはQuery String Parametersに対応しており,urlをつなぎ合わせる方法が一般的である.
base_url+urllib.urlencode(data)
フォームを提出する内容は何なのか、自分でhtmlのラベルやjsの関数を見て知る必要があります.一般的にhtmlのソースコードで検索することができます.商品idかもしれません.ページの相対経路の一部かもしれません.時間と関係があるかもしれません.もちろん、サイトに登って提出したフォームは暗号化されています.本当に解読するには推測と試しが必要です.
その後、シミュレーションログインが必要なサイトについては、認証コードを必要としない場合は、上記のGETとPOSTフォームを利用すれば解決できるはずですが、cookiesを提供する必要があるサイトもあります.この場合、requestにはcookiesパラメータが含まれます.
requests.get(url, headers=header, cookies=cookie_dict)
認証コードの登録が必要なサイトについては、まずログインし、ログイン後のcookiesをコピーして、ログイン後の状態を真似することも考えられますが、必ずしも成功するとは限りません.
ここまで言うと、前に学校のエネルギーサイトに登って電気代を調べたとき、非登録機能もcookiesを提供しなければ応答できなかったことをふと思い出します.フレームワークと関係があるのか分かりませんが、なんだかいろいろなことがありました.
最后に言いたいのは、前に登れないサイトに出会って、phantomjs+seleniumを使いたいと思っていましたが、理论的にはこの方法では登れないサイトはないような気がしますが、実习の时にはだめな状况に遭遇して、今もなぜか分かりません.しかし、事件はともかく、phantomjsは使いやすいが、今ではますますカンニングと同じように感じている.ブラウザだからだ.個人的に少量のデータを登るのはいいですが、ビジネス用の大量のデータrequestを登るのが正しいです.結局phantomjsを使うのはブラウザを直接使うよりも効率が高くてどこにも行けません.
とにかくheadersでもdataでもcookiesでも、爬虫類の真髄はできるだけリアルブラウザの登録過程を真似することです(live董偉明が大いに話していることを知っていますが)、捕まえたバッグにはそんなに多くのパラメータが入っていて、完全に入れる必要はありません.具体的にどのパラメータを使うと効果が出るかは、本当に経験に頼らなければなりません.何度も繰り返す逆登りの方法があるそうです.前回は次のリクエストを含むパラメータを受け入れましたが、このようなループはまだ登ったことがないので、断言できません.
最后にこの実习にツッコミを入れたいです.悪いボス(态度が悪いのか分からないのに顽固です)、幼い开発チーム(本当に仕事をしているのは2人の学生、1人の异郷の组长、1人の半人前の私...)、混乱したコード管理(開発者は実習学生で、交代が頻繁で、コードスタイルが異なり、可読性健全性のモジュール化が悪い).会社が留任してくれるかどうかはおろか、自分でもやりたくないが、これが貴重な最初のIT実習だと思うと、諦めたくない、いや、いや.
ここまで言うと、前に学校のエネルギーサイトに登って電気代を調べたとき、非登録機能もcookiesを提供しなければ応答できなかったことをふと思い出します.フレームワークと関係があるのか分かりませんが、なんだかいろいろなことがありました.