ウェブサイト上の公開情報(アップルアプリの情報)をクロールしようとしています。Pythonのスクレイピング:403と503のエラー
「検索アプリ/開発者」などの操作を実行するには、このウェブサイトにログインする必要があります。多くのウェブサイトが同様の情報を提供していますが、私はこの特定のウェブサイトが各アプリの最も完全で詳細な情報を提供していると考えています。
私は、有効なユーザーとして、タスクを実行できます。
しかし、私はpythonコード経由で情報にアクセスしようとすると、POST要求を送信するときに403エラーが発生し、Get要求を送信するときに504エラーが発生します。
私が使用しようとしている
実のuserAgentヘッダ
偽-ユーザエージェント」パッケージ
FancyOpener [/ようなSTH、パイソン3.4ため償却示す]
HttpAuthM .. [/ sthのように、認証のために、まだ動作しません]
ウェブサイトは自動化されたアクセスには強くないと思われますが、詳細情報は非常に便利です。この問題を回避できる方法はありますか?
ありがとうございます!
Iは、このヘッダーを試みた:
ua = {#'User-Agent':'Mozilla/5.0 (compatible; Googlebot/2.1; +Googlebot - Webmaster Tools Help)',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36',
'Connection':'Keep-Alive',
'Accept-Language':'zh-CN,zh;q=0.8',
'Accept-Encoding':'gzip,deflate,sdch',
'Accept':'*/*',
'Accept-Charset':'GBK,utf-8;q=0.7,*;q=0.3',
'Cache-Control':'max-age=0'
}
------------------------------------------------ HTTPError
Traceback (most recent call last) <ipython-input-43-421b27c5194e> in <module>()
68 data= data.encode('utf-8')
69 request = urq.Request(url, data, headers = ua)
---> 70 response = urq.urlopen(request)
71 the_page = response.read()
72 print(the_page)
c:\python34\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
159 else:
160 opener = _opener
--> 161 return opener.open(url, data, timeout)
162
163 def install_opener(opener):
c:\python34\lib\urllib\request.py in open(self, fullurl, data, timeout)
468 for processor in self.process_response.get(protocol, []):
469 meth = getattr(processor, meth_name)
--> 470 response = meth(req, response)
471
472 return response
c:\python34\lib\urllib\request.py in http_response(self, request, response)
578 if not (200 <= code < 300):
579 response = self.parent.error(
--> 580 'http', request, response, code, msg, hdrs)
581
582 return response
c:\python34\lib\urllib\request.py in error(self, proto, *args)
506 if http_err:
507 args = (dict, 'default', 'http_error_default') + orig_args
--> 508 return self._call_chain(*args)
509
510 # XXX probably also want an abstract factory that knows when it makes
c:\python34\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args)
440 for handler in handlers:
441 func = getattr(handler, meth_name)
--> 442 result = func(*args)
443 if result is not None:
444 return result
c:\python34\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs)
586 class HTTPDefaultErrorHandler(BaseHandler):
587 def http_error_default(self, req, fp, code, msg, hdrs):
--> 588 raise HTTPError(req.full_url, code, msg, hdrs, fp)
589
590 class HTTPRedirectHandler(BaseHandler):
HTTPError: HTTP Error 403: FORBIDDEN
----------------------------------------------
Iが要求を送信するためにクロム拡張である "高度なRESTクライアント" を使用して得られた以下の結果を。ログインを必要としないページでは、コードは200であることに注意してください。他の一つは
以下のコメントでログインpage.Seeリンク[アクセス成功] [3]
で403だった[アクセスが失敗]、[4]
こんにちは@先生、正しくエミュレートされたリクエストとセッションのサンプルをリクエストするのは大丈夫ですか?私は前にこのヘッダーを試しましたが、まだ失敗しました。問題は何ですか? – KeepLearning
申し訳ありません、編集済みの記事をご覧ください。私はコメントに投稿しようとしましたが、あまりにも難しい – KeepLearning
があります。隠れたフィールドやヘッダーがないかもしれません。あなたのコードと、動作していないページへのリンクを投稿できますか? あなたは、[3]ホストヘッダー – nonsensei