我是Python新手编程的新手。我想要获得符号和时间。
我能够得到适合我的时间。它只是第一个词,有时是时间,而不是“之前/之后”市场关闭。
但是当涉及到这个符号时,我不想要任何国外市场,所以没有任何东西。在符号中。这是我到目前为止所拥有的。对不起,如果它有点马虎。这是我在python中的第一个真正的程序....
import requests
import urllib2
import re
from bs4 import BeautifulSoup
site= "http://www.nasdaq.com/earnings/report/acrx"
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'en-US,en;q=0.8'}
url = "http://biz.yahoo.com/research/earncal/20150309.html"
content = urllib2.urlopen(url).read()
soup = BeautifulSoup(content)
m = re.findall('center><small>\S+ ', content)
w = re.findall('\?s=\w+',content)
x=0
lp = (len(m))
xlp = lp -1
for x in range (xlp):
print x, m[x+1][14:], w[x][3:]
答案 0 :(得分:4)
您可以使用BeautifulSoup来解析HTML,而不是使用正则表达式。您也可以使用time库来获取当前日期。
这是一个用于抓取雅虎财务的示例代码。
import requests
import bs4
def get_earning_data(date):
html = requests.get("https://biz.yahoo.com/research/earncal/{}.html".format(date), headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0"}).text
soup = bs4.BeautifulSoup(html)
quotes = []
for tr in soup.find_all("tr"):
if len(tr.contents) > 3:
if len(tr.contents[1].contents) > 0:
if tr.contents[1].contents[0].name == "a":
if tr.contents[1].contents[0]["href"].startswith("http://finance.yahoo.com/q?s="):
quotes.append({ "name" : tr.contents[0].text
,"symbol": tr.contents[1].contents[0].text
,"url" : tr.contents[1].contents[0]["href"]
,"eps" : tr.contents[2].text if len(tr.contents) == 6 else u'N/A'
,"time" : tr.contents[3].text if len(tr.contents) == 6 else tr.contents[2].text
})
return quotes
print(get_earning_data("20150309"))