サイトをスクレイピングして操作しようとしています。BeautifulSoup を使用すると、やりたいことがほとんどできますが、すべてではありません。セレンはその部分を処理できるはずです。Selenium Firefox Plugin を使用して動作させることができます。今すぐ自動化する必要があります。私の問題は、対話する必要がある領域が、OpenID プロバイダーを介して処理されるログイン プロンプトの背後にあることです。
幸いなことに、このブックマークレットを使用して、設定されている Cookie を取得できました。javascript:void(document.cookie=prompt(document.cookie,document.cookie));
これにより、ログインして BeautifulSoup を使用してページを解析できます。
これは、次のコードを介して行われます。
jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders.append(("Cookie","__cfduid=<hex string>; __utma=59652655.1231969161.1367166137.1368651910.1368660971.15; __utmz=59652655.1367166137.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=<a session id>; __utmb=59652655.1.10.1368660971; __utmc=59652655"))
page = opener.open(url).read()
soup = BeautifulSoup(scrap1)
...parse stuff...
この時点で、jar
は空であり、最終的な対話を行う必要があります (いくつかの DIV 要素をクリックし、別の DIV 要素が適切に更新されていることを確認します)。適当にログイン。
上記のクッキーを、セレンが認識して認識するものに移動するにはどうすればよいですか?
私はこのようなコードを試しました
for c in jar:
driver.add_cookie({'name':c.name, 'value':c.value, 'path':'/', 'domain':c.domain})
しかし、jar
は空なので、これは機能しません。このクッキーを瓶に入れる方法はありますか? この Cookie を使用して OpenId ログインをバイパスしているため、サーバーから何も返されません。