2

Webページからデータを取得しようとしていますが、問題が見つかりました。次のページ(つまり2ページ)に移動してデータを取得し続けると、1ページからデータを受信し続けます。次のページに切り替えようとして何か問題が発生したようです。

問題は、次のようなURLで問題が発生したことはないということです。

'http://www.webpage.com/index.php?page=' + str(pageno)

whileステートメントを開始するだけで、「pageno」に1を追加して2ページにジャンプします。

この形式でURLを開こうとすると、問題が発生します。

'http://www.webpage.com/search/?show_all=1#sort_order=ASC&page=' + str(pageno)

として

urllib2.urlopen('http://www.webpage.com/search/?show_all=1#sort_order=ASC&page=4').read()

http://www.webpage.com/search/?show_all=1からソースコードを取得します

私に関する限り、ハッシュを使用せずに他のページを取得する方法は他にありません。

通常、ブラウザの開始点を指定するために使用されるため、ハッシュを無視するのはurllib2だけだと思います。

4

2 に答える 2

5

ハッシュ(#)記号の後のURLのフラグメントはクライアント側の処理用であり、実際にはWebサーバーに送信されません。私の推測では、AJAXを使用してサーバーに正しいデータを要求するJavaScriptがページにあり、そのために使用されているURLを把握する必要があります。

Chromeを使用している場合は、開発者ツールの[ネットワーク]タブを見て、リンクをクリックしてブラウザの2ページ目に移動したときに要求されるURLを確認できます。

于 2012-08-15T12:07:52.203 に答える
1

これは、ハッシュがサーバーに送信されるURLの一部ではないため、ページ内の要素を識別するために使用されるフラグメント識別子です。ただし、一部のWebサイトでは、ページを識別するためにJavaScriptフックのハッシュフラグメントを誤用していました。ページ上でJavaScriptを実行できる必要があるか、JavaScriptをリバースエンジニアリングして、おそらくajaxを介して行われている実際の検索リクエストをエミュレートする必要があります。Firebugの[ネット]タブは、これに非常に役立ちます。

于 2012-08-15T12:11:23.680 に答える