Home > database >  POST request with JSESSION ID
POST request with JSESSION ID

Time:08-14

So I need to scrape this site, but everything is dynamic. I can't append to the URL the query param i need so i need to pass it with a POST request. I extracted the headers and the payload but something breaks along the way and i get the results of the starting page, not the page with the sent POST request. Also the JSESSION ID i get at the end is not the same as the one i sent in the headers. Here is my code

# post_URL = "https://lekovi.zdravstvo.gov.mk/drugsregister.searchform"
session = requests.Session()
cookie = session.get(URL).cookies.get("JSESSIONID")
print(cookie)
headers = {
"Accept": "text/javascript, text/html, application/xml, text/xml, */*",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-MK,en-US;q=0.9,en-GB;q=0.8,en;q=0.7,mk;q=0.6",
"Connection": "keep-alive",
"Content-Length": "819",
"Content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"Cookie": f"SERVERID=APPC_L2; JSESSIONID={cookie}",
"Host": "lekovi.zdravstvo.gov.mk",
"Origin": "https://lekovi.zdravstvo.gov.mk",
"Referer": "https://lekovi.zdravstvo.gov.mk/drugsregister/overview",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"Sec-GPC": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36",
"X-Prototype-Version": "1.7",
"X-Requested-With": "XMLHttpReques",
    }
payload = {
"t:ac": "overview",
"t:submit": ["submit_3","submit_0"],
"t:formdata": "Db5ytL52OazQLgFwZVqY/TPR99w=:H4sIAAAAAAAAAJVSu0oDQRS9BoRAGhF8NWLho1sDmkYbY0QQYiIGa5md3F1HdmfWO7N5NFb hI1fIFb6BRZ2/oMfYGNhZeFMshrFR7TaYc89c86dcy4fYbS9BAtblIZ6H0OhDdJaICL78bssSUi1WMQZkUDSBCVFoccSxo/QMyxBbahb8rgijITv UyjV/btT8bNtsCoOd9AkyYLB7eFh4m7lxyMVKHAlTSkohqL0cB49Zi12HLEZLjcMCRkuN5JDEz1LWx2y5mFSt/Cf7yW/ t1jxRHrRupHwuthZK3V83V4PniPgfQSdpzMPtZOmYyDSw7JSRpt9EncApgYOwj4NYcTnXM0a9jDpJp7CMp4qo5UHBArQfUqWKB4dQfFEKUSIK7aUXM8HeFDHD261Q2fDi1r7AI898HFFsTKrAPmzLJ3zeZfAt618L1YCeD/3pNX3MaJj8PaxehOSzaFmz82gKu4kRJlEZ7vdjN1xKcN55mbq7PKjnIVSHPI2Gnd5pO2JUZI7TvbGpZhiOuvPlMfmVwLL4CyWl1EGkDAAA=",
"filterByApprovalCarrier": "",
"manufacturerName": "",
"nameNumberOrCode": "paracetamol", # This is the thing i'm searching for, its an input field
"genericNameOrAtc": "",
"filterByModeOfIssuance": "",
"t:zoneid": "gridZone,"
    }

d = session.post(URL, headers=headers, data=payload)
print(d.cookies.get("JSESSIONID"))```

CodePudding user response:

To get the data from the server you can use next example:

import requests
import pandas as pandas
from bs4 import BeautifulSoup

url = "https://lekovi.zdravstvo.gov.mk/drugsregister/overview"
api_url = "https://lekovi.zdravstvo.gov.mk/drugsregister.searchform"

data = {
    "t:ac": "overview",
    "t:submit": '["submit_3","submit_0"]',
    "t:formdata": "",
    "filterByApprovalCarrier": "",
    "manufacturerName": "",
    "nameNumberOrCode": "paracetamol",
    "genericNameOrAtc": "",
    "filterByModeOfIssuance": "",
    "t:zoneid": "gridZone",
}

headers = {"X-Requested-With": "XMLHttpRequest"}
soup = BeautifulSoup(requests.get(url).content, "html.parser")
data["t:formdata"] = soup.select_one('#searchForm [name="t:formdata"]')["value"]

# parse the returned data with BeautifulSoup or with pandas:

# soup = BeautifulSoup(
#     requests.post(api_url, data=data, headers=headers).json()["zones"][
#         "gridZone"
#     ],
#     "html.parser",
# )

df = pd.read_html(
    requests.post(api_url, data=data, headers=headers).json()["zones"][
        "gridZone"
    ]
)[0]
print(df)

Prints:

    #                   Латинично име           Генеричко име         Јачина                                                 Пакување     Фармацевтска форма Начин на издавање                                                                                      Производител                                                                                   Носител на одобрение Број на решение Датум на решение Датум на важност  Датум на обнова  Големопродажна цена без ДДВ  Малопродажна цена со ДДВ                                                        Варијации Г/О/БС
0   1  IBUPROFEN/PARACETAMOL ALKALOID  ibuprofen, paracetamol  200 mg/500 mg                       10 таблети (блистер 1 х 10)/кутија  филм-обложена таблета               BRp  АЛКАЛОИД АД Скопје - Фармацевтска, Хемиска, Козметичка индустрија, Скопје, Р. Северна Македонија  АЛКАЛОИД АД СКОПЈЕ- фармацевтска, хемиска, козметичка индустрија-Скопје, Република Северна Македонија       11-4851/2       02.10.2019       30.09.2024              NaN                            0                         0                                                              NaN      Г
1   2  IBUPROFEN/PARACETAMOL ALKALOID  ibuprofen, paracetamol  200 mg/500 mg                       20 таблети (блистер 2 х 10)/кутија  филм-обложена таблета               BRp  АЛКАЛОИД АД Скопје - Фармацевтска, Хемиска, Козметичка индустрија, Скопје, Р. Северна Македонија  АЛКАЛОИД АД СКОПЈЕ- фармацевтска, хемиска, козметичка индустрија-Скопје, Република Северна Македонија       11-5026/2       02.10.2019       30.09.2024              NaN                            0                         0                                                              NaN      Г
2   3                     PARACETAMOL             paracetamol    120 mg/5 ml  темно стаклено шише х 100 ml   пластична лажичка/кутија                  сируп               BRp                                           РЕПЛЕК ФАРМ ДООЕЛ СКОПЈЕ, Скопје, Р. Северна Македонија                                                                               РЕПЛЕК ФАРМ ДООЕЛ СКОПЈЕ       11-1862/6       19.07.2016              NaN              NaN                            0                         0  jQuery('#showVarriationsModal_102b50fe87d6c80 .close').click();      Г
3   4                     PARACETAMOL             paracetamol         500 mg                     500 таблети (блистер 50 х 10)/кутија                таблета               BRp                                           РЕПЛЕК ФАРМ ДООЕЛ СКОПЈЕ, Скопје, Р. Северна Македонија                                                                               РЕПЛЕК ФАРМ ДООЕЛ СКОПЈЕ       11-3159/4       18.04.2018              NaN              NaN                            0                         0                                                              NaN      Г
4   5                     PARACETAMOL             paracetamol         300 mg             10 супозитории (2 x 5 PVC/PE алвеоли)/кутија           супозиторија               BRp                                           РЕПЛЕК ФАРМ ДООЕЛ СКОПЈЕ, Скопје, Р. Северна Македонија                                                                               РЕПЛЕК ФАРМ ДООЕЛ СКОПЈЕ       11-4694/5       12.04.2018              NaN              NaN                            0                         0                                                              NaN      Г
5   6                     PARACETAMOL             paracetamol         500 mg                       20 таблети (блистер 2 х 10)/кутија                таблета               BRp                                                                      GALENIKA AD, Белград, Србија                                                                                  ГАЛЕНИКА ДООЕЛ Скопје       11-5776/2       03.12.2020       25.09.2024              NaN                            0                         0                                                              NaN      Г
6   7                     PARACETAMOL             paracetamol    120 mg/5 ml   темно стаклено шише х 100 ml   пластично лажиче/кутија                  сируп               BRp                                                                      GALENIKA AD, Белград, Србија                                                                                  ГАЛЕНИКА ДООЕЛ Скопје       11-5777/2       03.12.2020       25.09.2024              NaN                            0                         0                                                              NaN      Г
7   8                     PARACETAMOL             paracetamol         125 mg                    10 супозитории (блистер 2 х 5)/кутија           супозиторија               BRp                                                                   PROFARMA Sh.a, Тирана, Албанија                                                                                        ТАРА-ФАРМ дооел        11-689/4       30.03.2017       30.03.2022              NaN                            0                         0                                                              NaN      Г
8   9                     PARACETAMOL             paracetamol         250 mg                    10 супозитории (блистер 2 х 5)/кутија           супозиторија               BRp                                                                   PROFARMA Sh.a, Тирана, Албанија                                                                                        ТАРА-ФАРМ дооел        11-690/8       30.03.2017       30.03.2022              NaN                            0                         0                                                              NaN      Г
9  10                     PARACETAMOL             paracetamol    120 mg/5 ml                      темно стаклено шише х 100 ml/кутија                  сируп               BRp                                                     BOSNALIJEK d.d., Сараево, Босна и Херцеговина                                                                         Претставништво БОСНАЛИЈЕК Д.Д.       11-8985/2       11.06.2019              NaN              NaN                            0                         0                                                              NaN      Г
  • Related