Je ne comprends pas pourquoi le code suivant continue de produire une chaîne vide. J'essaie d'obtenir le code pour extraire le contenu du site Web dans un fichier "txt", mais il continue à produire une chaîne vide. Y a-t-il une erreur dans le code?Le code continue de produire une chaîne vide
import urllib3
import certifi
# Function: Convert information within html document to a text file
# Append information to the file
def html_to_text(source_html, target_file):
http = urllib3.PoolManager(
cert_reqs='CERT_REQUIRED', # Force certificate check.
ca_certs=certifi.where(), # Path to the Certifi Bundle
headers={'connection': 'keep-alive', 'user-agent': 'Mozilla/5.0', 'accept-encoding': 'gzip, deflate'},
)
r = http.urlopen('GET', source_html)
print(source_html)
response = r.read().decode('utf-8')
# TODO: Find the problem that keeps making the code produce an empty string
print(response)
temp_file = open(target_file, 'w+')
temp_file.write(response)
source_address = "https://sg.finance.yahoo.com/lookup/all?s=*&t=A&m=SG&r=&b=0"
target_location = "C:\\Users\\Admin\\PycharmProjects\\TheLastPuff\\Source\\yahoo_ticker_symbols.txt"
html_to_text(source_address, target_location)
Quand vous dites « produire », voulez-vous dire « imprimé », ou « écrit dans un fichier », ou « à la fois imprimé et écrit dans un fichier »? Est-ce que 'print (source_html)' et 'print (response)' imprime quelque chose ou pas? – Kevin
Les fonctions d'impression et d'écriture ne produisent rien. "print (source_html)" imprime le "source_address" avec succès. – Cloud
L'objet 'r' semble avoir un attribut' r.data' qui contient le corps de la réponse. http://urllib3.readthedocs.org/en/latest/#usage – Jasper