seleniumを使い、xpathを利用して、スクレイピングを行なっていました。
driver.find_elements_by_xpath("~~~")
上記のようなコードでスクレイピングを行なっていたのですが、画面の読み込みが遅いサイトの場合、サイトが読み込まれていない部分が取得ができない。という事態が発生してしまいました。
このサイトで行なっていたのですが、私のwifiのせいかどんどん上から表示されていく。という形のようです。したがって表示されていない部分はxpathの取得要素の中に入っていませんでした。
そこで質問なのですが、xpathを利用して、このようなサイトで全ての要素を取得する方法はありますでしょうか?
色々調べたのですが、サイトの都合上以下のやり方では出来ませんでした。
html = urllib2.urlopen(url) dom = lxml.html.fromstring(html.read()) for o2 in dom.xpath(u"//a[text()='xxx']/@href"): bbb.append(o2)
以下は、実際のスクレイピングのコードです。
from selenium import webdriver import chromedriver_binary URL = "https://komyojikyozo.web.fc2.com/dnskv/dn01/dn01c01.htm" TIMEOUT = 10 driver = webdriver.Chrome() driver.implicitly_wait(TIMEOUT) driver.get(URL) frame = driver.find_element_by_name("frSheet") driver.switch_to.frame(frame) elems = driver.find_elements_by_xpath("(//tr[preceding-sibling::*[1][td/font[contains(text(),'訳文')]]])") for i in range(len(elems)): print(elems[i].text)
出力
かの阿羅漢にして正等覚者(ブッダ)たる世尊に礼拝いたします 『長部〔経典〕』 「戒蘊篇」なる聖典 「梵網経」(『長部』1) 【遍歴行者の物語】 このように私は聞いた。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/03 06:41