skip to Main Content

Open the url https://hnx.vn/en-gb/cophieu-etfs/chung-khoan-ny.html with browser,then click page 2 ,you can see that the content in response is a json.

enter image description here

I build a request with urllib to get the json:

import urllib.request
import ssl,json
base_url = "https://hnx.vn/ModuleIssuer/List/ListSearch_Datas"
proxy_handler = urllib.request.ProxyHandler({'https': '127.0.0.1:10801'})
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)
headers={
    "Host": "hnx.vn",
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Accept": "*/*",
    "Accept-Language": "en-GB,en;q=0.5",
    "Accept-Encoding": "gzip, deflate, br",
    "Content-Type": "application/x-www-form-urlencoded",
    "__RequestVerificationToken": "mKy3wwtZXopsLE5cIKMSnVxK934KPWzUievs0TWY7W9C9Hgu61EKzt1KTaxOGGTX5zvXIs0V_fPwWmEuDXLvXSfcSQNjY6uzwNCAeaQgyu01",
    "X-Requested-With": "XMLHttpRequest",
    "Content-Length": "113",
    "Origin": "https://hnx.vn",
    "Connection": "keep-alive",
    "Referer": "https://hnx.vn/en-gb/cophieu-etfs/chung-khoan-ny.html",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin"
    }
data = {
        "p_issearch":"0",
        "p_keysearch":"",
        "p_market_code":"",
        "p_orderby":"STOCK_CODE",
        "p_ordertype":"ASC",
        "p_currentpage":"2",
        "p_record_on_page":"10",
       }
postdata = bytes(json.dumps(data), "utf-8")
req=urllib.request.Request(url=base_url,headers=headers,data=postdata,method='POST')
ssl._create_default_https_context = ssl._create_unverified_context
response = opener.open(req)
data = response.read()

We get the response ,but it is not a json,list the header of the data

data[0:50]
b'<!DOCTYPE html>rn<html>rnrn<script>rn             '

The first 50 characters in json (responsed data) are as below:

'{"Content":"rnu003cstyleu003e.STT,.td_action{min-width:40p

Why can’t get the right response?How to fix my code?

2

Answers


  1. Chosen as BEST ANSWER

    To add proxy based on Andrej Kesely's code :

    import requests
    import pandas as pd
    
    requests.packages.urllib3.disable_warnings()
    
    proxies = {
       'http': '127.0.0.1:10801',
       'https': '127.0.0.1:10801',
    }
    
    data = {
        "p_issearch": "0",
        "p_keysearch": "",
        "p_market_code": "",
        "p_orderby": "STOCK_CODE",
        "p_ordertype": "ASC",
        "p_currentpage": "1",   
        "p_record_on_page": "600"
    }
    
    url = 'https://hnx.vn/ModuleIssuer/List/ListSearch_Datas'
    headers = {'X-Requested-With': 'XMLHttpRequest'}    
    data = requests.post(url, headers=headers, data=data, verify=False, proxies=proxies).json()    
    df = pd.read_html(data['Content'])[0]
    print(df)
    

    Although i get the json,the above code is based on requests library ,i can't accept it as a formal answer,my question remains,why my code with urllib library can't get the json?
    I'll receive the resolution revised on my previous code,it is your chance to get the points.


  2. To load the data from the URL you can use next example:

    import requests
    import pandas as pd
    
    requests.packages.urllib3.disable_warnings()
    
    data = {
        "p_issearch": "0",
        "p_keysearch": "",
        "p_market_code": "",
        "p_orderby": "STOCK_CODE",
        "p_ordertype": "ASC",
        "p_currentpage": "2",   # <-- change page here
        "p_record_on_page": "10"
    }
    
    url = 'https://hnx.vn/ModuleIssuer/List/ListSearch_Datas'
    
    headers = {'X-Requested-With': 'XMLHttpRequest'}
    
    data = requests.post(url, headers=headers, data=data, verify=False).json()
    
    df = pd.read_html(data['Content'])[0]
    print(df)
    

    Prints:

       STT Mã CK                          Tên tổ chức phát hành                                   Ngành Ngày GD đầu tiên Khối lượng NY KLLH (Cổ phiếu)
    0   11   ATS      Công ty cổ phần Tập đoàn dược phẩm Atesco  Thương mại và dịch vụ lưu trú, ăn uống       29/03/2016     3.500.000       3.500.000
    1   12   BAB             Ngân hàng Thương mại Cổ phần Bắc Á                               Tài chính       03/03/2021   813.386.340     833.426.644
    2   13   BAX                                CTCP Thống Nhất       Hoạt động kinh doanh bất động sản       24/03/2017     8.200.000       8.200.000
    3   14   BBS                Công ty CP Vicem bao bì Bút Sơn                             Công nghiệp       28/12/2005     6.000.000       6.000.000
    4   15   BCC                           CTCP Xi măng Bỉm Sơn                             Công nghiệp       24/11/2006   123.209.812     123.209.812
    5   16   BCF                        CTCP Thực phẩm Bích Chi                                     NaN       16/03/2020    27.830.412      27.830.412
    6   17   BDB                CTCP Sách và thiết bị Bình Định  Thương mại và dịch vụ lưu trú, ăn uống       29/01/2010     1.126.474       1.126.474
    7   18   BED       CTCP Sách và Thiết bị trường học Đà Nẵng  Thương mại và dịch vụ lưu trú, ăn uống       21/10/2009     3.000.000       3.000.000
    8   19   BII  CTCP Đầu tư và Phát triển Công nghiệp Bảo Thư       Hoạt động kinh doanh bất động sản       22/09/2014    57.680.000      57.680.000
    9   20   BKC                        CTCP Khoáng Sản Bắc Kạn                  Khai khoáng và Dầu khí       18/08/2009    11.737.728      11.737.728
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search