0

コンテンツがクエリ文字列に依存する Web ページからソース コードを取得する Python スクリプトを作成しようとしています。具体的なページはhttp://www.billboard.com/charts/hot-100#/charts/hot-100?begin=1&order=positionです。これは Billboard Hot 100 ページで、Hot 100 を 10 ページで 10 曲のグループで表示します。「begin」クエリ文字列アイテムを介して取得したチャート位置を制御すると、「begin」番号を含む 10 曲が返されます。基本的には、Windows スケジューラを使用して、毎週 10 ページを取得するスクリプトを自動的に実行したいと考えています。私はPythonでこれを行うことに夢中ではありません。

次のスクリプトを使用して、一見最初のページ (位置 1 ~ 10) を取得します。

import urllib
urllib.urlretrieve("http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=1&order=position",r'C:\g\filename.txt')

ただし、「begin」の値を 11 に変更しても、1 ~ 10 が取得されます。Web ページで、スクリプトによるそのようなアクションが許可されていない可能性があります。クエリ文字列なしで URL を入力すると、最初の 10 の位置も返されるので、クエリ文字列がまったく考慮されていない可能性があると考えています。別のアプローチ。

あなたが提供できるどんな助けも大歓迎です!

ありがとう!(そしてハッピーホリデー!)

4

3 に答える 3

2

コードは完全に機能しています。

ブラウザで指定した場合、URLhttp ://www.billboard.com/charts/hot-100#/charts/hot-100? begin=11&order=positionによって生成されたものと同じHTMLデータを取得しています。

つまり、11から20までのエントリを取得するコードは、AJAXのような非同期リクエストです。

このコードを試してみてください、それはうまくいくようです:

import urllib
urllib.urlretrieve("http://www.billboard.com/charts/hot-100?begin=11&order=position",r'C:\g\filename.txt')
于 2012-12-23T06:06:24.387 に答える
0

その URL を注意深く見ると、その半分が実際にはフラグメントの一部であることがわかります (通常はサーバーに送信されません)。彼らはおそらく AJAX を使用してそれを解析し、関連するデータを表示しています。

これは期待どおりに動作するようです: http://www.billboard.com/charts/hot-100?begin=21&order=position

于 2012-12-23T05:56:43.263 に答える
0

http://www.billboard.com/charts/hot-100#/charts/hot-100?begin=11&order=positionブラウザで にアクセスしてみましたか? 結果も得られます1-10beginの形式である必要があるようです10n + 1

于 2012-12-23T05:51:25.357 に答える