अस्वीकरण: शुरुआती यदि कोई डुप्लिकेट प्रश्न पहले ही पोस्ट किया जा चुका है तो हटा दिया जाएगा

मैं एक ऐसी स्क्रिप्ट बनाना चाहता हूं जो एकाधिक वेबपृष्ठों से डेटा प्राप्त करे और इसे डेटाफ़्रेम में कॉलम के रूप में संग्रहीत करे। जैसा कि आप नीचे से देख सकते हैं, मैं एक स्टॉक के लिए सफलतापूर्वक डेटा प्राप्त कर सकता हूं, मैं सोच रहा हूं कि क्या किसी के पास इसे संशोधित करने का विचार है ताकि मैं कुछ ऐसा उपयोग कर सकूं

stocklist = ["AMZN", "GOOG", "TSLA"]

नीचे स्क्रिप्ट:

from time import sleep
from selenium import webdriver
import pandas as pd



driver = webdriver.Chrome('/chromedriver')

stock_list = ['AMZN']
values = []
metrics = []
def stocks():
    for i in stock_list:
        driver.get(f"http://finviz.com/quote.ashx?t={i}")
        value = driver.find_elements_by_xpath("//td[@class='snapshot-td2']")
        metric = driver.find_elements_by_xpath("//td[@class='snapshot-td2-cp']")
        for i in metric:
            metrics.append(i.text)

        for a in value:
           values.append(a.text)





def frames():
    d = pd.DataFrame({'Metrics': metrics,'AMZN': values})

    print(d)
    d.to_csv("AMZN.csv")

आदर्श रूप से प्रत्येक नए स्टॉक और उनके संबंधित मूल्यों के लिए एक कॉलम बनाना चाहेंगे। वर्तमान में नीचे की तरह आउटपुट:

         Metrics     AMZN
0          Index  S&P 500
1            P/E   116.67
2      EPS (ttm)    20.93
3    Insider Own   11.20%
4   Shs Outstand  498.00M
..           ...      ...
67         SMA20    2.96%
68         SMA50   10.13%
69        SMA200   27.34%
70        Volume  689,073
71        Change    0.93%
0
ozwald 1 जून 2020, 17:28

1 उत्तर

सबसे बढ़िया उत्तर

यह बहुत आसान है:

from selenium import webdriver
from time import sleep
from selenium import webdriver
import pandas as pd

driver = webdriver.Chrome(executable_path=r"/chromedriver")

df = pd.DataFrame()

stock_list = ["AMZN", "GOOG", "TSLA"]

for stock in stock_list:
    values = []
    metrics = []

    driver.get(f"http://finviz.com/quote.ashx?t={stock}")
    driver.implicitly_wait(10)

    page_metrics = driver.find_elements_by_xpath("//td[@class='snapshot-td2-cp']")  
    for metric in page_metrics:
        metrics.append(metric.text)

    page_values = driver.find_elements_by_xpath("//td[@class='snapshot-td2']")
    for value in page_values:
        values.append(value.text)

    metric_column = 'Metrics_'+stock   
    df[metric_column] = metrics
    df[stock] = values

df.to_csv("finviz.csv")

बस उस कोड से गुजरें जिसे आप समझेंगे। यह शीट में आउटपुट है:

enter image description here

मैंने आपके लिए एक हिस्सा छोड़ दिया है ताकि आप इसे समझ सकें और ठीक कर सकें - मैं each stock के लिए 'Metrics' कॉलम लिख रहा हूं - यदि आपकी आवश्यकता है तो आप इसे सिंगल कॉलम में बदल सकते हैं।

0
Sowjanya R Bhat 2 जून 2020, 19:53