2015-03-07 1 views
2

Я новичок в программировании на Python. Я пытаюсь получить Символ и Время.Скребок Yahoo Заработок Календарь

Я могу получить время, которое работает для меня. Он выходит только с первым словом, иногда это время, а не рынок «после/до» закрывается.

Но когда дело доходит до символа, я не хочу никаких иностранных рынков, поэтому ничего с. ?? в символе. Вот что я до сих пор. Извините, если он немного неряшлив. Это моя первая настоящая программа в питона ....

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:] 

ответ

4

Вместо того, чтобы использовать регулярное выражение, вы можете использовать BeautifulSoup для разбора HTML. Вы можете использовать библиотеку time, чтобы получить текущую дату.

Вот пример кода для соскабливания финансов yahoo.

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")) 
+0

Спасибо! Короткая сладкая и до точки – Michael

+0

Все еще работает! Ты только что написал для меня дневной код. Привет, помощник! – pbnelson

Смежные вопросы