0

我正在嘗試發送一些json請求來刮取像這樣的無限滾動框link。它的JSON鏈接:在Python中發送json請求

http://www.marketwatch.com/news/headline/getheadlines?ticker=XOM&countryCode=US&dateTime=12%3A00+a.m.+Nov.+8%2C+2016&docId=&docType=2007&sequence=6e09aca3-7207-446e-bb8a-db1a4ea6545c&messageNumber=1826&count=10&channelName=%2Fnews%2Fpressrelease%2Fcompany%2Fus%2Fxom&topic=&_=1479366266513

一些參數不neccesary和我創建的有效參數的字典。例如,參數Count是每個滾動中顯示的項目數。我的代碼是:

import json 
import requests 

parameters = {'countryCode':'US','dateTime':'', 'docId':'','sequence':'6e09aca3-7207-446e-bb8a-db1a4ea6545c', 
     'messageNumber':'1826','count':'10','channelName':'', 'topic':'_:1479366266513' } 
data = json.dumps(parameters) 
firstUrl = "http://www.marketwatch.com/investing/stock/xom" 
html = requests.post(firstUrl, params = data).text 

我的問題是,根據參數我不能發送請求,如果我刪除了所有的參數,我得到相同的頁面(firstUrl鏈接),如果我包括所有的人。你有什麼想法爲什麼會發生,我怎樣才能解決這個問題?

+0

我想,要報廢無法通過單個請求(即使您指定'數:1000')接收的內容,因爲每個你再拍滾動的時候,您的瀏覽器發送新的'XHR'請求爲另一個(10項)數據。 – Andersson

+0

謝謝安德森,我的問題是,即使沒有定義任何參數,我得到的是相同的結果,這是主頁,而不是我感興趣的容器(有3個不同的無限滾動框,我對其中的一個),我給出了該特定元素的參數,但它無法檢測到它。 –

回答

1

我認爲你使用的firstUrl是不正確的。此外,您應該使用requests.get而不是發佈。您應該發送與鏈接中相同的參數。

import json 
import requests 

parameters = {'ticker':'XOM', 'countryCode':'US','dateTime':'', 'docId':'','sequence':'6e09aca3-7207-446e-bb8a-db1a4ea6545c', 
     'messageNumber':'1826','count':'10','channelName':'', 'topic':'_:1479366266513' } 
firstUrl = "http://www.marketwatch.com/news/headline/getheadlines" 
html = requests.get(firstUrl, params = parameters) 
print(json.loads(html.text)) # array of size 10 
+0

@ vtni:非常感謝你,它工作得很好,我真的很感謝你的幫助。 –

0

params預計Python字典,不是字符串,所以你應該直接傳遞parameters

parameters = {'countryCode':'US','dateTime':'', 'docId':'','sequence':'6e09aca3-7207-446e-bb8a-db1a4ea6545c', 
     'messageNumber':'1826','count':'10','channelName':'', 'topic':'_:1479366266513' } 

html = requests.post(firstUrl, parameters).text 

此外,請確保您實際上應該使用post而不是get

+0

@DeepSpapce,非常感謝,我直接插入參數,但沒有改變結果。當我將計數從10變爲100時,我預計會得到100個項目,但它仍然是一樣的。 –