4
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 


def wait(dr, x): 
    element = WebDriverWait(dr, 50).until(
    EC.presence_of_all_elements_located((By.XPATH, x)) 
) 
return element 
from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get("http://www.dinamalar.com/user_comments.asp? uid=14701&name=%E0%AE%A4%E0%AE%AE%E0%AE%BF%E0%AE%B4%E0%AF%8D%E0%AE%9A%E0%AF%86%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%A9%E0%AF%8D") 
for elem in wait(browser, '//*[@id="commsec"]/div[2]/div[1]'): 
print elem.text 

これは私が最初の10のコメントを抽出し、すべてのコメントhttp://www.dinamalar.com/user_comments.asp?uid=14701&name=%E0%AE%A4%E0%AE%AE%E0%AE%BF%E0%AE%B4%E0%AF%8D%E0%AE%9A%E0%AF%86%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%A9%E0%AF%8D抽出ユーザーのコメント

しかし、私のコードを抽出する必要がありますリンクです。ボタンをクリックすると、他の10個のコメントが動的に読み込まれます。どのようにpythonセレンを使用してこれらのコメントをすべて抽出するのですか

答えて

2

アイデアは、ページにいくつの "アイデア"要素が存在するかを調べることです。ボタンをクリックしてより多くのコメントを読み込むたびに、もう1つの「より多くのアイデア」の赤いボタンが表示されます。実装:

from selenium.common.exceptions import TimeoutException 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium import webdriver 


browser = webdriver.Firefox() 
wait = WebDriverWait(browser, 10) 
browser.get("http://www.dinamalar.com/user_comments.asp?uid=14701&name=%E0%AE%A4%E0%AE%AE%E0%AE%BF%E0%AE%B4%E0%AF%8D%E0%AE%9A%E0%AF%86%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%A9%E0%AF%8D") 

# initial wait for the page to load 
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".morered"))) 

pages = 1 
while True: 
    browser.find_elements_by_css_selector(".morered")[-1].click() 

    # wait for more "load more" buttons to be present 
    try: 
     wait.until(lambda browser: len(browser.find_elements_by_css_selector(".morered")) > pages) 
    except TimeoutException: 
     break # no more data loaded, exit the loop 

    print("Comments loaded: %d" % len(browser.find_elements_by_css_selector(".dateg"))) 

    pages += 1 

browser.close() 

URL内の余分なスペースも削除しました。

+0

ありがとうございます。私はこれに初心者ですので、コメントをどうやって得るのですか? –

+0

@VinayakumarRここでXPathを使用します: 'comments = [browser.find_elements_by_xpath(" div // @ "class = 'boxcmt1'] //要素のelement.text [@ class = 'heading']/following-sibling :: div ")]'となります。テストしてください。ありがとう。 – alecxe

+0

既存のコードにこの行を追加した後、警告のI/O警告が表示されますが、ASCII以外の文字が見つかりましたが、実行しようとしましたが、エラーが表示されます –

関連する問題