5

ブラウザでリンクをクリックしたときにjavascriptアクションを介して要求されたページのhtmlをダウンロードしようとしています。一般的なURLがあるので、最初のページをダウンロードできます。

http://www.locationary.com/stats/hotzone.jsp?hz=1

ただし、ページの下部に数字(1から10)のリンクがあります。したがって、1つをクリックすると、たとえば2ページに移動します。

http://www.locationary.com/stats/hotzone.jsp?ACTION_TOKEN=hotzone_jsp$JspView$NumericAction&inPageNumber=2

そのURLをプログラムに入れてhtmlをダウンロードしようとすると、Webサイトの別のページのhtmlが表示され、ホームページだと思います。

javascriptを使用し、特定のURLがない場合、このURLのHTMLを取得するにはどうすればよいですか?

ありがとう。

コード:

import urllib
import urllib2
import cookielib
import re

URL = ''

def load(url):

    data = urllib.urlencode({"inUserName":"email", "inUserPass":"password"})
    jar = cookielib.FileCookieJar("cookies")
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
    opener.addheaders.append(('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1'))
    opener.addheaders.append(('Referer', 'http://www.locationary.com/'))
    opener.addheaders.append(('Cookie','site_version=REGULAR'))
    request = urllib2.Request("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction", data)
    response = opener.open(request)
    page = opener.open("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction").read()

    h = response.info().headers
    jsid = re.findall(r'Set-Cookie: (.*);', str(h[5]))
    data = urllib.urlencode({"inUserName":"email", "inUserPass":"password"})
    jar = cookielib.FileCookieJar("cookies")
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
    opener.addheaders.append(('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1'))
    opener.addheaders.append(('Referer', 'http://www.locationary.com/'))
    opener.addheaders.append(('Cookie','site_version=REGULAR; ' + str(jsid[0])))
    request = urllib2.Request("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction", data)
    response = opener.open(request)
    page = opener.open(url).read()
    print page

load(URL)
4

1 に答える 1

1

seleniumツールスイートのseleniumwebdriverは、標準のブラウザーを使用してHTMLを取得するため(主な目標はWebアプリケーションのテスト自動化です)、JavaScriptが豊富なアプリケーションの廃棄に適しています。それは素晴らしいPythonバインディングを持っています。

私は、すべてのajaxが起動された後、セレンを使用してページソースを取得し、BeautifulSoupのようなもので解析する傾向があります(BeautifulSoupは不正な形式のHTMLにうまく対応します)。

于 2012-08-15T04:16:15.627 に答える