簡體   English   中英

從使用javascript顯示信息的網站上使用python下載數據

[英]downloading data using python from a website that uses javascript to display information

我通常使用以下模板腳本從網站下載數據:

import urllib.request as web
from bs4 import BeautifulSoup
...
url_to_visit ='http://www.website-link-to-download-data'
source_code =  web.urlopen(url_to_visit).read()
source_code = ''.join(map(chr, source_code)
source_code = source_code.split('\n')
## then further process the lines returned in `source_code` as needed

但是有時候我遇到非常困難的站點。

考慮以下站點: https : //www.spice-indices.com/idp2/Main#home 假設從第一個表格Intraday Alerts - United States ,我想通過Python腳本下載單擊SP TMI選項卡時顯示的信息。

我看了上面splitSource的輸出,但是我不知道如何提取所需的信息。 似乎正在使用Javascript后端顯示信息。 有人可以給我任何指示或建議嗎?

我正在使用Python3.x。

激活“ SP TMI”選項卡時,會有一個POST請求發送到“ intraday-announcements.json”端點-在代碼中模擬該請求並解析JSON響應。

使用requests示例工作代碼:

import requests

with requests.Session() as session:
    session.get("https://www.spice-indices.com/idp2/Main#home")

    response = session.post("https://www.spice-indices.com/idp2/intraday/effectivedate/11-14-2015/intraday-announcements.json", data={
        "start": "0",
        "limit": "10",
        "indexKey": "SPUSA-TMI-USDUF--P-US----"
    })

    data = response.json()["widget_data"]
    for item in data:
        print(item["EVENT_NAME"])

打印:

Dividend
Weekly Share Change
Special Dividend
Merger/Acquisition
Merger/Acquisition
Drop
Merger/Acquisition
Merger/Acquisition
Drop
Identifier Changes

請注意,生效日期實際上是在URL內,請參閱11-14-2015部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM