Pythonon ajax php 文本结果与屏幕结果不同?

Pythonon ajax php prase result is different from on screen result?

我试图从此页面中提取搜索结果:“http://std.stheadline.com/daily/formerly.php”。 在网页上选择 20-Nov 至 22-Nov 并选中“财经”新闻类别复选框时,会给出 47 个结果。 然而,我的 python php 代码和从 Chrome Inspect 获得的参数,产生了 162 个结果。服务器似乎没有识别我的代码参数,并给了我最新日期的所有新闻类别的结果。

我使用了这个代码: 将 pandas 导入为 pd

url=  "http://std.stheadline.com/daily/ajax/ajaxFormerly.php?startDate=2019-11-20&endDate=2019-11-22&type%5B%5D=15&keyword="

df = pd.read_json(url)
print(df.info(verbose=True))
print(df)

也尝试过:

url=  "http://std.stheadline.com/daily/ajax/ajaxFormerly.php?startDate=2019-11-20&endDate=2019-11-22&type=15&keyword="

它使用 POST 请求在正文中发送参数,而不是在 url 中。您不能在 url 中发送参数。您可以使用模块 requests(或 urllib)发送 POST 个请求

import requests

url = 'http://std.stheadline.com/daily/ajax/ajaxFormerly.php'

params = {
    'startDate': '2019-11-20',
    'endDate': '2019-11-22',
    'type[]': '15',
    'keyword': '',
}

r = requests.post(url, data=params)

data = r.json()

print(data['totalCount']) # 47

要将其加载到 DataFrame,您可能必须使用 io.StringIO 在内存中创建文件。

import requests
import pandas as pd
import io

url = 'http://std.stheadline.com/daily/ajax/ajaxFormerly.php'

params = {
    'startDate': '2019-11-20',
    'endDate': '2019-11-22',
    'type[]': '15',
    'keyword': '',
}

r = requests.post(url, data=params)

f = io.StringIO(r.text)
df = pd.read_json(f)

print(df)