Данные веб-наскрести на список акций


Я написал скрипт, который веб-данных наскрести на список акций. Скребок должен получать данные из 2 отдельных страниц, так что каждый символ акции должны скрести 2 разные страницы. Если я запускаю процесс в список, который составляет 1000 пунктов, это займет около 30 минут. Это не ужасно, я могу установить его и забыть его, но я интересно, если есть способ, чтобы ускорить процесс. Может хранить данные и ждать, чтобы все это написать в конце, а не на каждый цикл? Любые другие идеи с благодарностью.

import requests
from BeautifulSoup import BeautifulSoup
from progressbar import ProgressBar
import csv

symbols = {'AMBTQ','AABA','AAOI','AAPL','AAWC','ABEC','ABQQ','ACFN','ACIA','ACIW','ACLS'}
pbar = ProgressBar()

with open('industrials.csv', "ab") as csv_file:
    writer = csv.writer(csv_file, delimiter=',')
    writer.writerow(['Symbol','5 Yr EPS','EPS TTM'])
    for s in pbar(symbols):
        try:
            url1 = 'https://research.tdameritrade.com/grid/public/research/stocks/fundamentals?symbol='
            full1 = url1 + s
            response1 = requests.get(full1)
            html1 = response1.content
            soup1 = BeautifulSoup(html1)

            for hist_div in soup1.find("div", {"data-module-name": "HistoricGrowthAndShareDetailModule"}):
                EPS5yr = hist_div.find('label').text

        except Exception as e:
            EPS5yr = 'Bad Data'
            pass

        try:
            url2 = 'https://research.tdameritrade.com/grid/public/research/stocks/summary?symbol='
            full2 = url2 + s
            response2 = requests.get(full2)
            html2 = response2.content
            soup2 = BeautifulSoup(html2)

            for div in soup2.find("div", {"data-module-name": "StockSummaryModule"}):
                EPSttm = div.findAll("dd")[11].text

        except Exception as e:
            EPSttm = "Bad data"
            pass

        writer.writerow([s,EPS5yr,EPSttm])


124
4
задан 11 марта 2018 в 02:03 Источник Поделиться
Комментарии