1

ブックメーカーのベットを Web ページから直接クロールしたい. 現在、unibet.com というプロバイダーから見積もりを取得しようとしています。問題: 必要な見積もりを適切にフィルタリングするために、投稿リクエストを送信する必要があります。

したがって、次のウェブページにアクセスします https://www.unibet.com/betting/grid/all-football/germany/bundesliga/1000094994.odds#ここで、ベットセクションの上部にいくつかのチェックボックスがあります. 「一致」の代わりにすべてのボックスのチェックを外します。次に、更新ボタンをクリックして、投稿リクエストをクロムで記録しました。次のスクリーンショットは、送信される内容を示しています。

ここに画像の説明を入力

その後、一致の引用符のみを含むフィルタリングされた結果が得られます。

今、私はこれらの引用符が欲しいだけです. したがって、次の python コードを書きました。

    req = urllib2.Request( 'https://www.unibet.com/betting/grid/grid.do?eventGroupIds=1000094994' )
    req.add_header("Content-type", "application/x-www-form-urlencoded")
    post_data = [ ('format','iframe'),
                  ('filtered','true'),
                  ('gridSelectedTab','1'),
                  ('_betOfferCategoryTab.filterOptions[1_604139].checked','true'),
                  ('betOfferCategoryTab.filterOptions[1_604139].checked','on'),
                  ('_betOfferCategoryTab.filterOptions[1_611318].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_611319].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_611321].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_604144].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_624677].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_604142].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_604145].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_611322].checked','false'),
                  ('_betOfferCategoryTab.filterOptions[1_604148].checked','false'),
                  ('gridSelectedTimeframe','')]
    post_data = urllib.urlencode(post_data)
    req.add_header('Content-Length', len(post_data ))
    resp = urllib2.urlopen(req, post_data )
    html = resp.read()

問題: フィルタリングされた結果の代わりに、すべてのチェックボックスがチェックされているかのように、すべてのクオートとベット タイプの完全なリストを取得します。Python リクエストがフィルタリングされていないデータを返す理由がわかりません。

4

1 に答える 1

1

このサイトは、ユーザーの設定をセッション Cookie に保存します。適切な Cookie をキャプチャして送信していないため、サイトを更新するとデフォルトの結果が表示されます。

これを試して:

import cookielib

cookiejar = cookielib.CookieJar()
opener = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cookiejar),
)

urllib2.open()ここで、 call opener を関数呼び出しとして使用する代わりにopener()、引数を渡します。

于 2012-11-01T16:42:24.067 に答える