2017-09-28 7 views
0

J'ai énuméré deux ensembles de codes - un qui ne fonctionne pas (le premier) et l'autre qui le fait (le second). La question est comment puis-je faire fonctionner le premier code en utilisant le cert SSL, puisqu'il ne fonctionne pas sans vérification. J'ai un cert SSL que j'utilise pour accéder à la page Web. J'ai exporté en tant que .pfx (c'est la seule option). Comment utiliser les informations d'identification CERT pour accéder à la page principale (premier code). Cela aiderait immensément avec mes progrès! Merci. Si je clique sur la page principale (où les liens XMLS sont intégrés) à la demande, j'obtiens une soupe vierge (soup.title est vide et donc d'autres fonctions de soupe). Voici le code:Accéder au site Web sécurisé en utilisant le certificat SSL en python

from bs4 import BeautifulSoup 
import requests 

url = 'https://www.oasis.oati.com/cgi-bin/webplus.dll?script=/woa/woa-planned-outages-report.html&Provider=MISO' 
response = requests.get(url, verify=False) 
soup = BeautifulSoup(response.content, "html.parser") 

Cependant, si je frappe directement la page (sans vérification) avec le lien XML spécifique, je suis en mesure de le récupérer en utilisant ce code:

import requests 
import xml.etree.ElementTree as ET 
import pandas as pd 

url = 'https://www.oasis.oati.com/woa/docs/MISO/MISODocs/CurrentData/2308_Planned_Outages_2017-09-19-18-50-00.xml' 
response = requests.get(url, verify=False) 
root=ET.fromstring(response.text) 

all_records = [] #This is our record list which we will convert into a dataframe 
for i, child in enumerate(root): #Begin looping through our root tree 
    record = {} #Place holder for our record 
    for subchild in child: #iterate through the subchildren to user-agent, Ex: ID, String, Description 
     record[subchild.tag] = subchild.text #Extract the text create a new dictionary key, value pair 
     all_records.append(record) #Append this record to all_records 

df = pd.DataFrame(all_records).drop_duplicates().reset_index(drop=True) 

Répondre

0

Vous devriez utiliser cert option request.get appel:

requests.get(url, cert=('/path/client.cert', '/path/client.key'))

de plus, vous devez extraire votre certificat d'archives PFX (read this for example)

+0

Roman - J'ai pu exporter le fichier .cer (pas .cert) mais pas la clé. L'exemple ne parle pas de fichier .key. Pouvez-vous aider? –

+0

Essayez 'requests.get (url, verify = '/ chemin/vers/certfile')'. J'ai probablement mal compris ce que vous voulez. –