このサイトから
<訳文>の下の所だけをスクレイピングして保存しようと思っています。このページ×5000ページほどです。
以下のように取得をしたいです。
1 かの阿羅漢にして正等覚者(ブッダ)たる世尊に礼拝いたします\n『長部〔経典〕』\n「戒蘊篇」なる聖典....
試した要素取得について
1
soup.find_all("font", class_="font9")
classで指定する方法は一日中格闘しましたが、他のページには、fontがバラバラかつ、fontタグでないものもある。訳文以外にもfontタグがある場合がある。
if文で頑張って分岐しても絶対にうまくいかない事がわかりました。
2
x_pathを使う方法
x_pathはバラバラで一貫性が全くないため、使えませんでした。
要素をどのように取得できるでしょうか?
共通する条件としては、「訳文」という文字の下にある。という条件しかないように思えます。
この条件だけで文章を取得する事ができますでしょうか?
ご教授いただけると幸いです。
python
1import time 2from selenium import webdriver 3 4driver = webdriver.Chrome() 5 6url ='https://komyojikyozo.web.fc2.com/' 7driver.get(url) 8driver.implicitly_wait(5) 9 10print(driver.page_source) 11# 表示するフレームを指定しているだけで、左側のメニューや右側の本文はソースに含まれていない。 12 13 14# トップページがフレームに分かれているため、name="main"のフレームに入る 15frame_elem = driver.find_element_by_name('main') 16driver.switch_to.frame(frame_elem) 17driver.implicitly_wait(5) 18 19driver.find_element_by_link_text('『長部』「戒蘊篇」').click() 20driver.implicitly_wait(5) 21driver.find_element_by_link_text('「梵網経」').click() 22driver.implicitly_wait(5) 23driver.find_element_by_link_text('【遍歴行者の物語】').click() 24driver.implicitly_wait(5) 25# 表示に時間がかかるので、スリープで時間をとる 26time.sleep(10) 27 28# さらにフレームに分かれているため、name="frSheet"のフレームに入る 29frame_elem = driver.find_element_by_name('frSheet') 30driver.switch_to.frame(frame_elem) 31driver.implicitly_wait(5) 32 33# 「かの阿羅漢にして…」のelementを取得する 34elem = driver.find_element_by_xpath('/html/body/table/tbody/tr[14]/td[3]') 35 36print(elem.text) 37# かの阿羅漢にして正等覚者(ブッダ)たる世尊に礼拝いたします
以上のコードはこのサイトに入ってx_pathで取得するまでのコードとなります。
回答2件
あなたの回答
tips
プレビュー