2017-11-23 8 views
0

ブラウザのウェブサイトを開くことができず、コード全体が実行されませんでした。端末にもエラーが表示されないので、問題を把握できませんでした。 私のコードでは、xPathを使用してウェブサイトからイベントの詳細を抽出する必要があり、メインページをループしてすべてのイベントの詳細のリストを取得する必要があります。Pythonを使用してセレンを介してウェブサイトを開くことができませんでした

あなたのお役に立てれば幸いです!

import sys 
    import os 
    import selenium 
    import csv 
    import contextlib 
    import time 
    from selenium import webdriver 
    from time import sleep 
    from collections import defaultdict 
    from selenium.common.exceptions import NoSuchElementException,TimeoutException 
    from selenium.webdriver.support.ui import WebDriverWait 

    try: 
     from urlparse import urljoin 
     from urllib import urlretrieve 
    except ImportError: 
     from urllib.parse import urljoin 
     from urllib.request import urlretrieve 

    host = "http://www.sportshub.com.sg/sportshubtix/Pages/Home.aspx" 

    #xPath & CSS selectors 
    xpath_load_more_button = "//*[@id='togglercal-CalListslide1']/span[1]" 
    name = '//*[@id="eventCalendarScroll"]/div[2]/div[2]/ul/div[1]/div/dl/dt/a' 
    date = '//*[@id="eventCalendarScroll"]/div[2]/div[2]/ul/div[1]/div/dl/dd[1]/div' 
    venue = '//*[@id="eventCalendarScroll"]/div[2]/div[2]/ul/div[1]/div/dl/dd[2]/div' 
    description = '//*[@id="eventCalendarScroll"]/div[2]/div[2]/ul/div[1]/div/dl/dd[3]/div' 

    class Crawler(object): 
     def __init__(self): 
      self.data = defaultdict(list) 

     def start(self): 
      self.driver = webdriver.Firefox() 
      #self.driver.implicitly_wait(1) 

     def load_main_page(self): 
      self.driver.get(host) 

     def load_page(self, url): 
      self.driver.get(url) 

     def load_more_page(self): 
      try: 
       self.driver.find_element_by_xpath(xpath_load_more_button).click() 
      return True 
     except (NoSuchElementException): 
      return False 

    def get_name(self): 
     try: 
      event_name = [n.text for n in self.driver.find_element_xpath(name)] 
      self.data["event_names"] = self.remove_duplicate(self.data["event_names"] + event_name) 
     except: 
      print("event invalid") 

    def remove_duplicate(self, x): 
     result = [] 
     for i in x: 
      if i != "": 
       if i not in result: 
       result.append(i) 


    def crawler(self, event): 
     self.data["event_names"] = event 
     #self.data["dates"] = [] 
     #self.data["time"] = [] 
     #self.data["venues"] = [] 
     #self.data["description"] = [] 
     print('Crawling Events = {}'.format(event)) 
     self.load_main_page() 

def main(): 
    crawler = Crawler() 
    crawler.start() 

main() 
+1

エラースタックトレースを共有できますか?観察されたエラーがない場合、トレースレベルのログを設定し、いくつかの情報を取得しようとします。そうでなければ、何がうまくいかないかを見つけるためにコードをデバッグする必要があります。 – DebanjanB

答えて

0

start関数で、self.crawler()を追加します。 この関数は、driver変数を呼び出した後に開始します。その後、ブラウザはURLに行きます

関連する問題