2017-09-06 14 views
0

hereからのデータの解析に興味があります。ただし、urlのアドレスに変更がないため、デフォルトページ以外ではolderまたはnewerのいずれのデータもparseできません。どのように私はデフォルトのページ上のそれ以外のデータを取得するつもりですか?私は解決策を見つけるために長い間試してきました、本当に本当に本当に助けに感謝します。私はdevのツールのネットワーク要求を見るに基づきURLが変更されない場合のデータの解析(ページ番号)

+0

ルックと' older'ま​​たは 'newer'をクリックして作られているものの要求を監視します。それは助けるかもしれない? – Acidic

+1

新しいURLがこのURLと呼ばれていたときはいつでも、新しいデータが必要になるたびにrowIdを変更してください。 https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79501&scrollForward=true&filter=%7B% 22キーワード22%3A%22%22%2C%22%22%3A%22%22%2C%22%22%3A%5B%5D%7D – MMRahman

答えて

2

そのウェブサイトがどのように動作:

ページ最初のロードは、それがHTML内の現在のデータをロードします。 URLパラメータ

https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79519&scrollForward=true&filter=%7B%22keyword%22%3A%22%22%2C%22impact%22%3A%22%22%2C%22countries%22%3A%5B%5D%7D` 

注:

rowId, scrollForward, filter 

ソリューション:

は、カスタム要求を作成しますが、ページネーションでolderまたはnewerをクリックして任意の時間は、それがこのURLにGET要求を行いますを上記のURLに追加しますが、単にrowIdパラメータを減らしたりインクリメントしたりしてページをスクロールします。例えば

: `Network`タブの下のクロムコンソールで

GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79519 
GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79520 
GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79521 
+0

素晴らしい!どうもありがとう。あなたは私と一緒に共有することができます、あなたはこのURLのアドレスを正確に見つけましたか?私はネットワークタブの下に(検査要素の下で)見ましたが、私はそれを見つけることができません –

+0

確かに。ネットワークタブを見て、 'old'または' newer'を押してGETリクエストを起動してください。 'XHR'フィルタの下に表示されるべきです(または' All'をフィルタリングするだけです)。 – Acidic

+0

それを得ました!ありがとうございました –

2

urlsを解析するためlxmlrequestspython 3.6を使用しています、あなたは、デフォルトのページに新しい日付を選択すると、以下のGET要求がなされていることがわかります。

ベースURL:

https://markets.ft.com/data/world/ajax/getnextecoevents? 

クエリパラメータ(あなたは、フィルタのdictをURLENCODEする必要があります)

startDate=2017-09-04&filter={"keyword":"","impact":"","countries":[]} 

これで、必要な日付をリクエストし、urllibを使用して残りのフィルタパラメータをurlencodeします。これはあなたが必要とするものを得るはずです。

関連する問題