2017-01-18 9 views
0

私はまた、会議の日付、会議の場所を取得し、各レースのために、馬の名前を取得したい。スクレイピングテーブル&印刷、各種データ

これは私が望んでいますものの例である:

Date of Race Meet 
Location of Race Meet 
Race Number 
Horse.... 
... 
... 
... 
Race Number 
Horse 
... 
... 
etc 

を誰かが私がのために各レース大会の日時と場所が印刷されるようにコードを調整だけでなく、レース番号を助けることができるだろうそれぞれの馬?

私は以下を試みましたが、もっと効率的な方法があるかどうか疑問に思っていました。事前

+0

私は上記のコードを書くことで、どのように動作するのか理解できるようになります。他の人にコードを書くよう頼むべきではありません。 –

+2

こんにちは、あなたが私のために書いたコードを実際に適応させていることに気付かれるかもしれません。私はあなたが私のものを変更する前に、かなりのコードを書いていました。これはあまりにも多くを求めている場合私は単にそれを削除します援助を求めるです – Kirsty

答えて

0
import requests, re, bs4 
from urllib.parse import urljoin 


def make_soup(url): 
    r = requests.get(url) 
    soup = bs4.BeautifulSoup(r.text,"lxml") 
    return soup 

def get_links(url): 
    soup = make_soup(url) 
    a_tags = soup.find_all('a', href=re.compile(r"^/FreeFields/")) 
    links = [urljoin(start_url,a['href']) for a in a_tags] 
    return links 

def get_info(link): 
    soup = make_soup(link) 
    tds = soup.find_all('td', class_="horse") 
    if tds: 
     top = soup.find(class_="top").h2 
     for s in top.stripped_strings: 
      print(s) 
     for index, td in enumerate(tds, 1): 
      print(index, td.text, sep='\n') 
    else: 
     print('not find') 

if __name__ == '__main__': 
    start_url = 'http://www.racingaustralia.horse/' 
    links = get_links(start_url) 
    for link in links: 
     get_info(link) 

def get_tds(link): 
    soup = make_soup(link) 
    race_date = soup.find_all('span', class_="race-venue-date") 
    for span in race_date: 
     print(span.text) 

    tds = soup.find_all('td', class_="horse") 
    for td in tds: 
     print(td.text) 

def get_info(link): 
    item = soup.find_all('div', class_="top") 
    for div in item: 
     print(div.text) 

if __name__ == '__main__': 
    links = get_links(start_url) 
    for link in links: 
     get_info(link), get_tds(link) 

おかげアウト:

Warwick Farm: Australian Turf Club 
Wednesday, 18 January 2017 
1 
GAUGUIN (NZ) 
2 
DAHOOIL (NZ) 
3 
METAMORPHIC 
4 
MY KIND 
5 
CONCISELY 
6 
ARAZONA 
7 
APOLLO 
8 
IGNITE THE LIGHT 
9 
KRUPSKAYA 

あなたが必要とする情報が含まれていない、あなたはそれをフィルタリングするために正規表現を変更する必要があり、多くのURLがありますこのようにして、コードをより速く実行することができます。

+0

こんにちは、この結果は、競馬番号ではなく、馬の番号を印刷します。私は本当に馬の数字を望んでいない - ちょうどレース番号。 – Kirsty