网页爬虫 - python requests库模拟登陆学校教务网遇到数据库繁忙
高洛峰
高洛峰 2017-04-17 18:01:26
0
5
640

第一次写爬虫也是第一次在SF提问题=。=
思路就是get登陆下网址获得一个cookie然后带着cookie以post方式登陆
headers伪造和浏览器一模一样
服务器总是返回一个数据库繁忙的界面,找了很久也不知道原因在哪


s = requests.Session()
x = s.get(loginUrl)
r = s.post(postUrl,data=
{
'zjh':'********',
'mm':'********',
'v_yzm':CodeRecognition()
}
,headers = headers)


print(x.headers)
print(x.request.headers)
print(r.headers)
print(r.request.headers)


f=file("cookie.txt","w+")
f.write(r.text)
f.close()

CodeRecognition() 这个验证码识别模块源码太长就不贴出来了,就是先用urllib库访问验证码地址 http://222.195.242.222:8080/validateCodeAction.do 把图片下载到本地,然后对图像二值化灰度等处理后调用Tesseract-OCR识别并返回

补充内容:在chrome中用EditThisCookie管理工具删掉网站的cookie然后刷新页面,登录会失败,返回数据库繁忙。但是我用session先访问网站返回给了我一个setcookie,然后带着这个cookie post表单为什么还是会有这个错误呢?

这是在sublime3中运行打印出的内容:

{'Transfer-Encoding': 'chunked', 'Set-Cookie': 'JSESSIONID=bhazvcnoUA-YYbw_WQZsv; path=/', 'Keep-Alive': 'timeout=8, max=500', 'Server': 'Apache', 'Connection': 'Keep-Alive', 'Cache-Control': 'private', 'Date': 'Sun, 15 May 2016 09:06:53 GMT', 'Content-Type': 'text/html; charset=GBK'}

{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.9.1'}

{'Transfer-Encoding': 'chunked', 'Keep-Alive': 'timeout=8, max=499', 'Server': 'Apache', 'Connection': 'Keep-Alive', 'Date': 'Sun, 15 May 2016 09:06:53 GMT', 'Content-Type': 'text/html; charset=GBK'}

{'Origin': 'http://222.195.242.222:8080', 'Content-Length': '77', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36', 'Host': '222.195.242.222:8080', 'Referer': 'http://222.195.242.222:8080/', 'Cookie': 'JSESSIONID=bhazvcnoUA-YYbw_WQZsv', 'Content-Type': 'application/x-www-form-urlencoded'}
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(5)
Peter_Zhu

リーリー

上記のコードはデータを取得できます
基本的な考え方は次のとおりです
GET が検証コードを取得すると、サーバーは Cookie を返します
この Cookie を取得してフォームを POST するだけです
私はただ最近たまたま学校名を書いたところ、このウェブサイトのクローラーは多くの問題に遭遇し、解決しました
これは私たちの学校のものよりも簡単です...

いいねを押す +0
黄舟

あなたの学校の学業管理システムは本当に...
オーナー、クローラーとして働くときは我慢しなければなりません。今日は何もすることがないので、以下を見てもらいました。正常にリクエストできるコード。常に呼び出しに失敗するインターフェイスの場合は、キー データが正しいかどうかを最初に検討する必要があります。実際に正しいにもかかわらず、依然として奇妙なエラーが返される場合は、ブラウザでデバッグすることで確認できます。 , POST リクエストデータには他にもいくつかの空のフィールドがあります。もちろん、これらはバックグラウンド判定にとっては意味がないかもしれませんが、すべてが意味がないというわけではないので、エラーが発生した場合は追加する必要があります。もちろん、データ内のフィールドが正しいか間違っている場合は、HTTP ヘッダーの情報を考慮する必要があります。主な情報は、Origin、Referer、および User-Agent です。それでも機能しない場合は、次のことが考えられます。以下のように、Cookie フィールドの情報が追加されていません。フィールドを追加した後、最終的に Cookie の問題であることがわかりました。 リーリー

現時点では、データベースはビジー状態ではありませんが、確認コード エラーが発生した後にページがリダイレクトされます。

最後に、クロールには特に忍耐が必要です。クロール対策戦略を採用しているサイトの場合は特にそうです。

いいねを押す +0
巴扎黑

注意喚起、あなたのアカウントのパスワードが公開されました。

いいねを押す +0
小葫芦

はは、このアカウントを使用してログインした人はいますか?

いいねを押す +0
PHPzhong

モザイク処理はありません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート