我正试图从谷歌金融的新界面中提取股票价格。我使用xpath导航到价格的位置,但是在打印它时,它总是返回一对正方形大括号[]。
我尝试过修复它,但是似乎没有什么效果,而且它也对屏幕上的所有其他对象都这样做。
from lxml import html
import requests
import time
def parse(ticker):
url = "http://google.com/finance?q=%s"%(ticker)
response = requests.get(url, verify=False)
parser = html.fromstring(response.content)
priceO = parser.xpath('//*[@id="fac-ut"]/div[1]/div[4]/div[1]/span[1]/text()')
print priceO
parse('AAPL')输出:
[]
[Finished in 1.2s]发布于 2018-02-23 13:03:58
你的XPath似乎不正确
试着取代
priceO = parser.xpath('//*[@id="fac-ut"]/div[1]/div[4]/div[1]/span[1]/text()')带下线
price0 = parser.xpath('//div[@id="price-panel"]//span')[0].text_content().strip()产出:
172.50发布于 2018-03-03 17:52:10
为什么不这样做呢?
import datetime
import pandas as pd
import numpy as np
import pylab as pl
import datetime
from sklearn.cluster import AffinityPropagation
from sklearn import metrics
from matplotlib.collections import LineCollection
from pandas_datareader import data as wb
from sklearn import cluster, covariance, manifold
start = '2019-02-01'
end = '2020-02-01'
tickers = ['MMM',
'ABT',
'ABBV',
'ABMD',
'ACN',
'ATVI']
thelen = len(tickers)
price_data = []
for ticker in tickers:
prices = wb.DataReader(ticker, start = start, end = end, data_source='yahoo')[['Open','Adj Close']]
price_data.append(prices.assign(ticker=ticker)[['ticker', 'Open', 'Adj Close']])
#names = np.reshape(price_data, (len(price_data), 1))
names = pd.concat(price_data)
names.reset_index()
#pd.set_option('display.max_columns', 500)
open = np.array([q['Open'] for q in price_data]).astype(np.float)
close = np.array([q['Adj Close'] for q in price_data]).astype(np.float)
print(names)

https://stackoverflow.com/questions/48948161
复制相似问题