Drkcore

29 05 2016 Python Tweet

TDnet? 強いよね…

TDnet? 強いよね…右クリック禁止,jsでHTML組み立て、iframeつかいまくり、button要素でクリック阻止とすきがないね。でも俺は負けないよ。どm、DOMたちが躍動する俺のseleniumを皆さんに見せたいね

というわけで 東証のサービスをスクレイピングしたい案件が発生したのだけど、あのサイトあれだった。一応個人でRSS化しているヒトはいたのだけど、今回は色々あって自分で頑張ってみた。

  • input要素ではなくbutton要素でクリックしてsubmitする感じになっていたのでsend_keys(Keys.RETURN)
  • iframeの内部には普通にはアクセス出来ないのでswitch_to_frameで移動する必要がある

コードを一部抜粋

def access(self, code):
    url = "https://www.release.tdnet.info/index.html"
    self.driver.get(url)
    iframe = self.driver.find_element_by_tag_name("iframe")
    self.driver.switch_to_frame(iframe)
    self.driver.find_element_by_name("q").send_keys("{}0".format(code))
    self.driver.find_element_by_name("q").send_keys(Keys.RETURN)
    time.sleep(2)
    results = []
    try:                                                                                                                                                          
        result_frame = self.driver.find_element_by_name("mainlist")
        self.driver.switch_to_frame(result_frame)
        main_table = self.driver.find_element_by_id("maintable")
        for tr in main_table.find_elements_by_tag_name("tr"):
            company_name = tr.find_element_by_class_name("companyname").text
            published = tr.find_element_by_class_name("time").text
            t = tr.find_element_by_class_name("title")
            title = t.find_element_by_tag_name("a").text
            url = t.find_element_by_tag_name("a").get_attribute("href")
            results.append({"company_name": company_name,
                            "published": published,
                            "title": title,
                            "url": url})
        return results
    except WebDriverException:
        logging.debug("{} not found".format(code))
        return results

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021