4


7

今のところ、urllib2を使用して通常のページをクロールできます。

request = urllib2.Request( 'http://stackoverflow.com')request.add_header( 'User-Agent'、random.choice(エージェント))response = urllib2.urlopen(要求)htmlSource = response.read()print htmlSource

しかし…​私はPOST(または偽のセッション)をシミュレートしたいですか? Facebookにアクセスしてクロールできるようにします。 それ、どうやったら出来るの?

4 Answer


7


あなたがログインするときあなたの選んだサイトがあなたに送ったクッキーを保存する必要があるでしょう。それがあなたのセッションを続けるものです。 `urllib2`では、クッキー処理をサポートするOpenerオブジェクトを作成することでこれを行います。

import urllib2, cookielib
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))

このオープナーを使えば、GETまたはPOSTのどちらでもリクエストを行うことができます。

content = opener.open(urllib2.Request(
    "http://social.netwo.rk/login",
    "user=foo&pass=bar")
).read()

urllib2.Requestには2番目のパラメーターがあるので、それはPOSTリクエストになります - それがNoneであれば、GETリクエストになります。 HTTPヘッダを追加するには、 `。add_header`を使うか、コンストラクタにヘッダの辞書(もしくはタプル - タプル)を渡すことでもできます。 詳しくはurllib2.Requestのマニュアルを読んでください。

それはあなたが始めましょう! がんばろう。

(ps:あなたがクッキーへの読み取りアクセスを必要としないなら、あなたは単にクッキーjarを自分で作成することを省略することができます; HTTPCookieProcessorはあなたのためにそれをするでしょう。)


4


http://wwwsearch.sourceforge.net/mechanize/[Mechanize]ライブラリは、Pythonでブラウザをエミュレートする簡単な方法です。


1


最初にurllibを使用してデータをエンコードし、次にurllib2を使用して要求を送信することでPOST要求を実行できます。

これは この記事で説明されています。


1


またはPyCurlを選択として使用することができます…​