python html результат проверки функции JS - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь очистить веб-страницу с выполненным сценарием JS.

Я могу получить HTML с не выполненным JS, используя from requests import get

Но я не могу получить результат функции JS, например, когда я проверяю веб-страницу с помощью mozilla

, вот функция, из которой я хотел бы получить результат:

function showFlight(idPilote, idFlight, idActivite)

на этой странице

есть идеи, как это сделать?

Я пробовал это

def kmlScrap(target):
    curl = pycurl.Curl()
    curl.setopt(pycurl.CAINFO, certifi.where())
    curl.setopt(pycurl.SSL_VERIFYPEER, 0) 
    curl.setopt(pycurl.URL, target)
    curl.setopt(pycurl.WRITEFUNCTION, e.write)
    curl.perform()
    return e

или

response = get(target)
print(response.text)
html_soup = BeautifulSoup(response.text, 'html.parser')

, что я пытаюсь сделать, это написать эту команду curl в формате pycurl:

curl "https://www.syride.com/scripts/ajx_vols.php?p=/en/flights/&idPays=0&pseudo=0&typePratique=0&page=01&idSpot=0&recherche=&order=&tri=&l=en" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0" -H "Accept: */*" -H "Accept-Language: en-US,en;q=0.5" --compressed -H "X-Requested-With: XMLHttpRequest" -H "DNT: 1" -H "Connection: keep-alive" -H "Referer: https://www.syride.com/en/flights/&idPays=0&pseudo=0&typePratique=0&page=01&idSpot=0&recherche=&order=&tri=" -H "Cookie: instruments2=5ai6jgg9p6bpkh3m7slf0b2vq7; gb__ssyride=aufnlupslr259o49nc98qm1t55" -H "Cache-Control: max-age=0"

любая помощь очень приветствуется.

Спасибо, Мат

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Это прямой вызов Back-End API.

import requests
import pandas as pd


params = {
    'l': 'en'
}


def main(url, params):
    with requests.Session() as req:
        allin = []
        for page in range(1, 41):
            print(F"Extracting Page# {page}")
            params['page'] = page
            r = req.get(url, params=params)
            df = pd.read_html(r.content, encoding="UTF-8",
                              header=0)[0][:-1]
            allin.append(df)
        new = pd.concat(allin)
        new.to_csv("data.csv", index=False)
        print("Done")


main("https://www.syride.com/scripts/ajx_vols.php", params)
0 голосов
/ 07 апреля 2020

Я нашел ответ:

def kmlScrap(target):
    curl = pycurl.Curl()
    curl.setopt(pycurl.CAINFO, certifi.where())
    curl.setopt(pycurl.SSL_VERIFYPEER, 0) 
    curl.setopt(pycurl.URL, target)
    opts={pycurl.USERAGENT:"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0", pycurl.HTTPHEADER:["Accept: */*", "Accept-Language: en-US,en;q=0.5", "Connection: keep-alive", "X-Requested-With: XMLHttpRequest", "DNT: 1", "Referer: https://www.syride.com/en/flights/&idPays=0&pseudo=0&typePratique=0&page=01&idSpot=0&recherche=&order=&tri=", "Cookie: instruments2=5ai6jgg9p6bpkh3m7slf0b2vq7; gb__ssyride=aufnlupslr259o49nc98qm1t55", "Cache-Control: max-age=0"]}
    for (key,value) in opts.items():
            curl.setopt(key,value)
    curl.setopt(pycurl.WRITEFUNCTION, e.write)
    curl.perform()
    return e
...