Как собрать данные, отличные от данных о финансах Yahoo - PullRequest
0 голосов
/ 07 февраля 2020

Я хочу собрать информацию о различных обувных компаниях. Я пытаюсь очистить EPS от Yahoo-финансов, но я нигде не могу найти, как это сделать. Пока я вижу только один способ найти данные о запасах как открытые, закрытые и т. Д. c. Как я могу очистить данные от Yahoo-Fiance, которые не являются фондовыми данными.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Вот еще один подход для вас. Примечание: изменив URL-адрес, вы можете или удалить различные показатели для загрузки.

import requests
from bs4 import BeautifulSoup

base_url = 'http://finviz.com/screener.ashx?v=152&s=ta_topgainers&o=price&c=0,1,2,3,4,5,6,7,25,63,64,65,66,67'
html = requests.get(base_url)
soup = BeautifulSoup(html.content, "html.parser")
main_div = soup.find('div', attrs = {'id':'screener-content'})

light_rows = main_div.find_all('tr', class_="table-light-row-cp")
dark_rows = main_div.find_all('tr', class_="table-dark-row-cp")

data = []
for rows_set in (light_rows, dark_rows):
    for row in rows_set:
        row_data = []
        for cell in row.find_all('td'):
            val = cell.a.get_text()
            row_data.append(val)
        data.append(row_data)

#   sort rows to maintain original order
data.sort(key=lambda x: int(x[0]))
import pandas
pandas.DataFrame(data).to_csv("C:/Users/ryans/OneDrive/Desktop/today.csv", header=False)
0 голосов
/ 17 февраля 2020

Это позволит получить нужные метрики и записать все в файл CSV.

import csv
import requests
from bs4 import BeautifulSoup

url_base = "https://finviz.com/quote.ashx?t="
tckr = ['SBUX','MSFT','AAPL']
url_list = [url_base + s for s in tckr]

with open('C:/your_path_here/metrics.csv', 'a', newline='') as f:
    writer = csv.writer(f)

    for url in url_list:
        try:
            fpage = requests.get(url)
            fsoup = BeautifulSoup(fpage.content, 'html.parser')

            # write header row
            writer.writerow(map(lambda e : e.text, fsoup.find_all('td', {'class':'snapshot-td2-cp'})))

            # write body row
            writer.writerow(map(lambda e : e.text, fsoup.find_all('td', {'class':'snapshot-td2'})))            
        except HTTPError:
            print("{} - not found".format(url))
...