2017-08-27 13 views
2

我使用webdriver的硒(Python的3.0)颳去這個website數據。所有的數據都是正確的,但是它會以列表的形式進行刮取,這意味着有127個團隊和賠率以及129個Hrefs。不幸的是,這意味着Href不在團隊旁邊,並且在Excel中正確的賠率。有沒有辦法解決這個問題?如何在表格的形式颳去,以便名單變得更加

我附上截圖和我的代碼如下。有沒有一種方法可以將其調整爲表格,以便它知道不需要刮擦Href,而團隊和賠率不可見?我從具有此功能的Winautomation遷移到Selenium。

https://ibb.co/kMC0mk - 圖片顯示爲什麼Href不在團隊和賠率 https://ibb.co/hh4rsQ - Excel的外觀。

import time 
from selenium import webdriver 
driver = webdriver.Chrome(executable_path=r'C:\ad\chromedriver.exe') 
driver.set_window_size(1024, 600) 
driver.maximize_window() 


driver.get('https://www.bluebet.com.au/sports/Soccer/100') 

SCROLL_PAUSE_TIME = 0.5 

# Get scroll height 
last_height = driver.execute_script("return document.body.scrollHeight") 

while True: 
    # Scroll down to bottom 
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 

    # Wait to load page 
    time.sleep(SCROLL_PAUSE_TIME) 

    # Calculate new scroll height and compare with last scroll height 
    new_height = driver.execute_script("return document.body.scrollHeight") 
    if new_height == last_height: 
     break 
    last_height = new_height 

time.sleep(15) 

#Odds 
langs = driver.find_elements_by_css_selector(".table-grid__row:nth-child(1) .headline-wrap") 
for lang in langs: 
    print (lang.text) 

time.sleep(10) 

#link 
langs = driver.find_elements_by_css_selector("div.ctr--epsilon.soft > a[href*='/sports/Soccer/']") 
for lang in langs: 
    print (lang.get_attribute('href')) 

time.sleep(10) 

#Team 
langs = driver.find_elements_by_css_selector(".table-grid__row:nth-child(1) .place-bet__odds") 
for lang in langs: 
    print (lang.text) 

回答

1

我同意@ChellWheatly,找不到用CSS做這件事的方法。

試試這個XPath選擇刮只有「HREF中」有內容:

//a/ancestor::div[contains(@class, 'table-grid')]/preceding-sibling::div[contains(@class, 'ctr--epsilon')]//a 

(我已經this chrome extension測試這個真實頁)

+0

我似乎並沒有得到任何東西langs = driver.find_elements_by_xpath(「// a/ancestor :: div [contains(@class,'table-grid')]/preceding-sibling :: div [contains(@class,'ctr - epsilon')] 「) 郎在LANGS: 打印(lang.get_attribute(」 HREF「)) – Tetora

+0

這是因爲XPath的選擇我寫的是針對'DIV'標籤,你必須要找到'A' desce ndants。 – Niloct

+0

你能提供一個例子嗎? – Tetora