2017-03-07 11 views
2

オンラインニュース記事を指す約10.000のURLリストがあります。 Requests-Library(Python 3.5)を使って、これらのニュース記事のhtmlコンテンツをスクラップするコードを書いています。目標は、可読性モジュールを使用して記事のコンテンツを取得し、それに関するさらなる分析を実行することです。これはほとんどの場合に有効です。しかし、すべてのウェブサイトはオランダ語であるため、EUの方針に従い、クッキーの使用を同意する必要があると述べています。そのうちのいくつか、例えばhttp://telegraaf.nlは、ユーザーがボタンをクリックしなければならない別のページをロードすることによってこれを行います。この場合、私は、ヘッダにクッキーを渡すことによって、通常の記事の内容を取得することができます。Pythonを使用して異なるWebサイトに設定するクッキーを確認してください

import requests 

user_agent = 'Mozilla/5.0' 
url = 'http://www.telegraaf.nl/dft/geld/werk-inkomen/27740808/__Vechten_om_werk_in_noorden__.html' 
cookies_telegraaf = {'TMGCOOKIE': '{%22version%22:%22t3%22}'} 
html = requests.get(url, headers={"User-Agent": user_agent}, cookies=cookies_telegraaf) 
print(html.content) 

これは私が必要とするHTMLコンテンツを印刷します。問題は、すべてのサイトが異なるCookieを必要とすることです。だから私の質問です:ブラウザに手動でチェックインすることなく、各Webサイトのヘッダーにどのような特定のクッキーを渡すかを見つける方法はありますか?

ありがとうございました。

答えて

0

これは本当の答えよりもコメントのようです。 Hereが役立つかもしれません。
まず、クッキーなしで作業するサイトを処理し、別のページを読み込まないユーザー、別のページを読み込んだユーザーを処理しようとします。あなたの質問は、簡単にクッキーにアクセスする方法があるかどうかを知ることである文書は、そのための方法を与える要求し、here場合
しかし:

url = 'http://example.com/some/cookie/setting/url' 
>>> r = requests.get(url) 

>>> r.cookies['example_cookie_name'] 
'example_cookie_value' 

サーバーに独自のクッキーを送信するには、使用することができますCookieパラメータ:

>>> url = 'http://httpbin.org/cookies' 
>>> cookies = dict(cookies_are='working') 

>>> r = requests.get(url, cookies=cookies) 
>>> r.text 
'{"cookies": {"cookies_are": "working"}}' 
+0

ありがとうございました。クッキーがなくても、別のページがないサイトでも、同意してもらうことができます。クッキーにアクセスするためのあなたの方法はうまくいきません。ウェブページからのクッキーを受け入れることを意味する特定のクッキーを積極的に設定する必要があります(私はここで皮肉にはなりません)。場合によっては 'accept_cookies'が '1'に設定されている場合もあり、別のサイトでは異なる書式が使用されることがあります。私が現在知っている唯一の方法は、「クッキーを受け入れる」ボタンをクリックし、ブラウザ設定をチェックして新しいクッキーが設定されているかどうかを確認することです。 – Kevin

+0

@Kevinそうであれば、おそらく 'selenium'のようなライブラリを使ってブラウザをシミュレートする必要があります。ページの受け入れボタンに共通の要素がありますか?「input type = 'submit'」などのようなものがありますか?もしそうなら、それらを自動的にクリックしてクッキーを受け取るようにセレンにピンポイントしようとすることができますか? –

+0

ありがとう、私はセレンを試して、結果を報告します。残念ながら、ボタンを使う人もあれば、ハイパーリンクを使う人もいます。しかし、通常、ページには1つか非常に少ないものしかないので、少しの余分なコーディングがその仕事をするかもしれません。私がもっと知っているとき、私はあなたに知らせるでしょう。 – Kevin

関連する問題