2017-01-12 2 views
0

У меня есть таблица, в которой я хочу забрать все ссылки, перейдите по ссылке и очистите элементы в пределах td class = horse.Скребок таблицы для ссылок, ссылки и данные scrape

домашняя страница, где таблица со всеми ссылками имеет следующий код:

<table border="0" cellspacing="0" cellpadding="0" class="full-calendar"> 
    <tr> 
     <th width="160">&nbsp;</th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=NSW">NSW</a></th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=VIC">VIC</a></th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=QLD">QLD</a></th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=WA">WA</a></th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=SA">SA</a></th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=TAS">TAS</a></th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=ACT">ACT</a></th> 
     <th width="105"><a href="/FreeFields/Calendar.aspx?State=NT">NT</a></th> 
    </tr> 


    <tr class="rows"> 
     <td> 
      <p><span>FRIDAY 13 JAN</span></p> 
     </td> 

       <td> 
        <p> 

          <a href="/FreeFields/Form.aspx?Key=2017Jan13,NSW,Ballina">Ballina</a><br> 

          <a href="/FreeFields/Form.aspx?Key=2017Jan13,NSW,Gosford">Gosford</a><br> 

        </p> 
       </td> 

       <td> 
        <p> 

          <a href="/FreeFields/Form.aspx?Key=2017Jan13,VIC,Ararat">Ararat</a><br> 

          <a href="/FreeFields/Form.aspx?Key=2017Jan13,VIC,Cranbourne">Cranbourne</a><br> 

        </p> 
       </td> 

       <td> 
        <p> 

          <a href="/FreeFields/Form.aspx?Key=2017Jan13,QLD,Doomben">Doomben</a><br> 

        </p> 
       </td> 

Я в настоящее время есть код, чтобы посмотреть на таблицу и распечатать ссылки

from selenium import webdriver 
import requests 
from bs4 import BeautifulSoup 

#path to chromedriver 
path_to_chromedriver = '/Users/Kirsty/Downloads/chromedriver' 

#ensure browser is set to Chrome 
browser = webdriver.Chrome(executable_path= path_to_chromedriver) 

#set browser to Racing Australia Home Page 
url = 'http://www.racingaustralia.horse/' 
r = requests.get(url) 

soup=BeautifulSoup(r.content, "html.parser") 

#looks up to find the table & prints link for each page 
table = soup.find('table',attrs={"class" : "full-calendar"}). find_all('a') 
for link in table: 
     print link.get('href') 

интересно, если любой может помочь в том, как я могу получить код, чтобы щелкнуть по всем ссылкам, находящимся в таблице &, на каждую из страниц сделать следующее:

g data = soup.findall("td",{"class":"horse"}) 
for item in g_data: 
    print item.text 

Заранее спасибо

+0

Что вы подразумеваете под "Нажмите на ссылки"? Значит, перейдя на страницу ссылки, а затем соскабливая все ссылки там? – Signal

+0

Да, так что таблица состоит из данных, такие как ниже, <таблицы границы = "0" CELLSPACING = "0" CELLPADDING = "0" класса = "полный календарь"> \t \t \t <тра класса = "строки «> \t \t \t

Пятница 13 января

\t \t \t

Ballina
\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t Gosford
\t \t \t \t \t \t \t

\t \t \t \t

\t \t \t \t \t \t Ararat
\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t Cranbourne

Kirsty

+0

@KirstyDent Пожалуйста, поставьте все соответствующие данные, такие как HTML, в свой комментарий выше, в самом вопросе так что для более поздних читателей это проще найти. – JeffC

ответ

0
import requests, bs4, re 
from urllib.parse import urljoin 
start_url = 'http://www.racingaustralia.horse/' 

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] # convert relative url to absolute url 
    return links 

def get_tds(link): 
    soup = make_soup(link) 
    tds = soup.find_all('td', class_="horse") 
    if not tds: 
     print(link, 'do not find hours tag') 
    else: 
     for td in tds: 
      print(td.text) 

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

из:

http://www.racingaustralia.horse/FreeFields/GroupAndListedRaces.aspx do not find hours tag 
http://www.racingaustralia.horse/FreeFields/Calendar.aspx?State=NSW do not find hours tag 
http://www.racingaustralia.horse/FreeFields/Calendar.aspx?State=VIC do not find hours tag 
http://www.racingaustralia.horse/FreeFields/Calendar.aspx?State=QLD do not find hours tag 
http://www.racingaustralia.horse/FreeFields/Calendar.aspx?State=WA do not find hours tag 
....... 

WEARETHECHAMPIONS 
STORMY HORIZON 
OUR RED JET 
SAPPER TOM 
MY COUSIN BOB 
ALL TOO HOT 
SAGA DEL MAR 
ZIGZOFF 
SASHAY AWAY 
SO SHE IS 
MILADY DUCHESS 

BS4 + запросы могут удовлетворить ваши потребности.

+0

Спасибо большое! Попробуй это прямо сейчас :) – Kirsty

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