Куда вставить для l oop? - PullRequest
       10

Куда вставить для l oop?

0 голосов
/ 12 марта 2020

Я перебираю различные документы, содержащие ссылки на некоторый текст. Всего имеется 1954 ссылки в 193 документах.

Каждая ссылка требует от меня +1 к счетчику, который является фиксированным номером, 2821614688517316786. Каждый раз, когда я хочу получить доступ к одной из ссылок, мне нужно +1 номер.

Куда мне вставить счетчик, чтобы он добавил 1 и, таким образом, работал до тех пор, пока не осталось больше документов?

from bs4 import BeautifulSoup
import xml.etree.ElementTree as ET
import glob
import os
import hashlib 
import hmac 
import requests 
import json
import pandas as pd
from pandas.io.json import json_normalize
print("top")
path = "/Users/user/Downloads/Thesis papers/links/"
#LOADING ALL THE LINKS TO TRANSCRIPTS

#Counter here doesn't work.
counter = 2821614688517316784
for gg in range(3954):
    counter += 1
    print(counter)

    for filename in glob.glob(os.path.join(path, "*")):
        with open(filename) as open_file:
            content = open_file.read()
        bs = BeautifulSoup(content, "xml")
        print("loading BS")
        for individual_xml in bs.find_all("Response"):
            for link in individual_xml.find_all("Fields"):
                for fields in link.find_all("Field"):
                    word = "Earnings Call"
                    if word in fields["value"]:

                        for i in link.find_all("Field", {"id":"7011"}):
                            #print(fields)
                            #print(i["value"][0])
                            print("Connecting to API")
#CONNECTING TO API

                            #Your FactSet Information  
                            key = ' -' 
                            keyId = '-' 
                            username = '-'  
                            serial = '-' 
                            #counter = 2821614688517316782

                            ba_key = bytearray.fromhex(key) 
                            my_int = counter.to_bytes(8, 'big', signed=True) 
                            my_hmac = hmac.new(ba_key,msg=my_int, digestmod=hashlib.sha512) 
                            digested_counter = my_hmac.digest() 
                            otp = digested_counter.hex()
                            json_object = {     
                                    'username': username,     
                                    'keyId': keyId,     
                                    'otp': otp ,     
                                    'serial': serial 
                                    }
                            OTP_url = 'https://auth.factset.com/fetchotpv1' 
                            payload = json.dumps(json_object) 
                            header = {'Content-Type': 'application/json'} 
                            r = requests.post(OTP_url, data=payload)   
                            r_key = r.headers.get(key='X-DataDirect-Request-Key')
                            r_token = r.headers.get(key='X-Fds-Auth-Token') 
                            print('DataDirect Request Key: ', r_key) 
                            print('Token:', r_token) 
                            #Confirm authentication and session token work 
                            header = {'X-Fds-Auth-Token':r_token}  
                            Service_url = 'https://datadirect.factset.com/services/auth-test'
                            r = requests.get(Service_url,headers=header) 

                            url = i["value"]
                            r = requests.get(url,headers=header)
                            print(r.text)
                            with open(''+fields["value"]+''+'.xml', 'w') as f:
                                f.write(r.text)
...