2017-01-25 27 views
0

html looks like this私はこのコードを書いて、URLからすべてのコースを削っています。このため私はxpathを使ってコース数を取得しようとしています。しかし、それは私に何も与えません。どこが間違っているの?セレン - パイソンでxpathを使用して要素テキストを検索するNOt作業

import requests 
from bs4 import BeautifulSoup 
from selenium import webdriver 
from time import sleep 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait` 

class FinalProject:

def __init__(self,url= "https://www.class-central.com/subject/data-science"):` 
     self.url = url 
     base_url = 'https://www.class-central.com' 
     self.error_flag = False 
     self.driver = webdriver.Chrome(<path to chromedriver>) 
     self.driver.get(self.url) 
     sleep(2) 
     self.count_course_and_scroll() 

    def count_course_and_scroll(self): 
     wait = WebDriverWait(self.driver, 30); 
     ele = wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, 'Not right now, thanks.'))); 
     ele.click() 
     print "----------------------POP UP CLOSED---------------------" 
     total_courses = self.driver.find_element_by_xpath("//span[@id='number-of-courses']") 
     print total_courses 
     print total_courses.text 
     self.driver.close() 

fp = FinalProject()

+0

に表示されるまで、共有してください待ちますあなたが作業しているHTMLコード。 – Jose

+1

間違いはありますか? – Guy

+0

@Jose私はhtmlのスクリーンショットを共有しました。私は完全なものをどのように共有すべきか分かりません。 –

答えて

0

textが動作しない場合は、股関節にget_attribute

print total_courses.get_attribute('text') 
#or 
print total_courses.get_attribute('innerHTML') 
+1

'print total_courses.get_attribute( 'innerHTML')'は結果を返しましたが、 'print total_courses.get_attribute( 'text')'は出力としてNOneを返しました。それはなぜそうですか?なぜ 'text'が動かないのか? –

+0

@python_userわかりません。それは私のために働いた。 – Guy

+0

@python_user多分、あなたは親テキスト 'total_courses = self.driver.find_element_by_xpath(" span {span [@ id = 'コース数']] ')' 'print total_courses.text'を抽出できます。それはあなたに '187コースを利用可能にする' – Guy

0
ele = wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, 'Not right now, thanks.'))); 
ele.click() 
print "----------------------POP UP CLOSED---------------------" 
total_courses = self.driver.find_element_by_xpath("//span[@id='number-of-courses']") 

を試すことができますコードの一部、私は2つのものを疑います:

  1. ポップアップは常に表示されますか?
  2. number-of-coursesのテキストは時間通りに表示されますか?

あなたは1わからない場合、私はトライキャッチ

約2でそれを置くことをお勧めします - いくつかのテキストは、その要素

try: 
    ele = wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, 'Not right now, thanks.'))); 
    ele.click() 
finally: 
    total_courses = wait.until(EC.presence_of_element_located(By.XPATH, "//span[@id='number-of-courses' and text() != '']") 
    print total_courses.text 
+1

'試着/'キャッチ '?あなたは本当ですか? :)これは間違いなく 'Python'コードではありません。 https://docs.python.org/2.7/tutorial/errors.html#handling-exceptions – Andersson

+0

ありがとうございます、私は明らかにPythonに精通していません。しかし、そのアイデアはまだ同じです。 –

関連する問題