1

私は現在、職場用の Web ページから大量のデータを (できれば) スクリーン スクレイピングするスクリプトを作成しています。これは ASP.NET ページであり、Chrome または Internet Explorer で表示する場合、ログインはまったく必要ありません。

Python で URLLIB2 によって読み取られるように、インターネット エクスプローラー セッションを「セッション ジャック」しようとしましたが、まだアクセスが拒否されます (インターネット エクスプローラーが使用している ASP.NET_Sessionid を追加した後)。

確かに私はインターネット ネットワーキングについてほとんど知らないので、おそらくここで何か間違ったことをしているのでしょうが、Python からこの Web ページにアクセスする必要があります。別のライブラリがうまく機能する場合は、喜んで使用します。

4

1 に答える 1

1

Web ページが有効な要求ヘッダーをチェックしている可能性がありますか?

このタイプのジョブには pycurl を使用する必要があります。

#!/usr/bin/env python
import pycurl
import cStringIO
buf = cStringIO.StringIO()

pycurl_headers = ['Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                  'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3',
                  'Accept-Language:en-US,en;q=0.8,bg;q=0.6',
                  'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 \
                  (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31']


c = pycurl.Curl()
c.setopt(c.URL, 'http://google.com')
c.setopt(c.WRITEFUNCTION, buf.write)
c.setopt(c.AUTOREFERER, 1)
c.setopt(c.FOLLOWLOCATION , True)
c.setopt(c.CONNECTTIMEOUT, 5)
c.setopt(c.TIMEOUT, 5)
c.setopt(c.HTTPHEADER, pycurl_headers)
c.perform()

print buf.getvalue()
buf.close()
于 2013-05-01T14:02:11.783 に答える