pohzipohzi / forexfactory_econcal. py

ساخت وبلاگ

کلون از طریق HTTPS کلون با GIT یا پرداخت با SVN با استفاده از آدرس وب مخزن.

درباره URL های کلون بیشتر بدانید

یک اسکرابر برای داده های تقویم اقتصادی کارخانه فارکس

این پرونده حاوی متن یونیکد دو طرفه است که ممکن است متفاوت از آنچه در زیر آمده است ، تفسیر یا گردآوری شود. برای بررسی ، پرونده را در یک ویرایشگر باز کنید که شخصیت های پنهان Unicode را نشان می دهد. در مورد شخصیت های دو طرفه یونیکد بیشتر بدانید

 

از BS4 واردات زیبا
درخواست های واردات
وارد کردن dateTime
ورود به سیستم واردات
واردات CSV
def setLogger ():
ورود به سیستمBasicConfig (سطح = ورود به سیستم. اطلاعات ،
فرمت = '٪ (asctime) s - ٪ (levelname) s - ٪ (پیام) s' ،
نام پرونده = 'logs_file' ،
filemode = 'w')
کنسول = ورود به سیستم. streamhandler ()
FORMATTER = ورود به سیستم. Formatter ('٪ (Asctime) S - ٪ (LevelName) S - ٪ (پیام) S')
کنسول . setFormatter (قالب ساز)
ورود به سیستمGetLogger (''). addHandler (کنسول)
def getEconomicCalendar (startLink ، endlink):
# برای کنسول وضعیت فعلی بنویسید
ورود به سیستماطلاعات ("داده های خراش برای پیوند:<>". قالب (startLink))
# صفحه را بگیرید و سوپ درست کنید
BaseUrl = "https://www.forexfactory.com/"
r = درخواست ها. Get (BaseUrl + StartLink)
داده = r. متن
سوپ = زیبا (داده ها ، "lxml")
# داده های جدول را دریافت و تجزیه کنید ، جزئیات و نمودار را نادیده بگیرید
جدول = سوپ. پیدا کردن ("جدول" ، class_ = "calendar__table")
# از انتخاب کننده CSS ". Calendar__Row-Grey" استفاده نکنید (برای داده های تاریخی رزرو شده است)
TRS = جدول. انتخاب کنید ("tr. calendar__row. calendar_row")
زمینه ها = ["تاریخ" ، "زمان" ، "ارز" ، "تأثیر" ، "رویداد" ، "واقعی" ، "پیش بینی" ، "قبلی"]
# برخی از ردیف ها تاریخ ندارند (سلول ها ادغام شده)
curr_year = startLink [ - 4:]
curr_date = ""
curr_time = ""
برای TR در TR:
# زمینه ها ممکن است گاهی اوقات به هم ریخته ، به TUE 25 سپتامبر 2:45 صبح هزینه های مصرف کننده فرانسوی مراجعه کنید
# در این حالت ما به خطاها اضافه می کنیم. csv زمان تاریخ خطا
تلاش كردن :
برای زمینه در زمینه ها:
داده = tr. انتخاب کنید ("td. calendar__cell. calendar__<>.<>". قالب (فیلد ، فیلد)) [0]
# چاپ (داده)
اگر زمینه == "تاریخ" و داده ها باشد. متننوار ()! = "":
curr_date = داده. متننوار ()
ELIF FIELD == "زمان" و داده ها. متننوار ()! = "":
# زمان گاهی "تمام روز" یا "روز X" است (به عنوان مثال جلسات سالانه WEF)
اگر داده هامتننوار (). پیدا کردن ("روز")! = - 1:
curr_time = "12:00 صبح"
دیگری:
curr_time = داده. متننوار ()
ELIF FIELD == "ارز":
ارز = داده. متننوار ()
ELIF FIELD == "Impact":
# وقتی تأثیر می گوید "غیر اقتصادی" در موش ، مربوطه
# نام کلاس "تعطیلات" است ، بنابراین ما از نام کلاس استفاده نمی کنیم
تأثیر = داده ها. پیدا کردن ("دهانه") ["عنوان"]
ELIF FIELD == "رویداد":
رویداد = داده. متننوار ()
elif field == "واقعی":
واقعی = داده. متننوار ()
elif field == "پیش بینی":
پیش بینی = داده. متننوار ()
ELIF FIELD == "قبلی":
قبلی = داده ها. متننوار ()
dt = dateTime. زمان قرار . Strptime ("،"
"٪ y ، ٪ a ٪ b ٪ d ، ٪ i: ٪ m ٪ p")
چاپ ("،". به ([str (dt) ، ارز ، تأثیر ، رویداد ، واقعی ، پیش بینی ، قبلی] بپیوندید))
بجز :
با Open ("errors. csv" ، "a") به عنوان f:
CSVنویسنده (f). نویسنده ([curr_year ، curr_date ، curr_time])
# بازگشت مجدد هنگام رسیدن به آخرین پیوند موجود
اگر startLink == endlink:
ورود به سیستماطلاعات ("داده های بازیابی با موفقیت")
برگشت
# لینک را برای هفته آینده دریافت کنید و دنبال کنید
دنبال کنید = سوپ. انتخاب کنید ("a. calendar__pagination. calendar__pagination-next. next")
دنبال کنید = دنبال کنید [0] ["href"]
GetEconomicCalendar (دنبال کنید ، endlink)
اگر __name__ == "__main__":
"""
Run this using the command "python `script_name`.py>>`output_name`. csv"
"""
setLogger ()
GetEconomicCalendar ("Calendar. php؟ هفته = ژانویه 7. 2007" ، "Calendar. php؟ هفته = DEC24. 2017")
مبانی اسکالپینگ...
ما را در سایت مبانی اسکالپینگ دنبال می کنید

برچسب : نویسنده : سید مهدی گلابی بازدید : <-PostHit-> تاريخ : يکشنبه 4 تير 1402 ساعت: 18:10