このページの英単語と日本語訳すべてをスクレイピングするコードを書いている途中なのですがfor文が四回しか回らず
divorce :離婚 の行で毎回終了してしまいます。
1~3回目までのfor文は正しく出力されているので指定箇所は間違っていないと思うのですがそれ以降の出力がうまくいきません。
初歩的な質問かもしれませんがよろしくお願いします。
python
1#coding=UTF-8 2from time import sleep 3import pandas as pd 4import requests 5from bs4 import BeautifulSoup 6from PIL import Image 7import io 8import time 9 10url = 'https://eigo-duke.com/tango/kou3.html' 11res = requests.get(url) 12soup = BeautifulSoup(res.content,'html.parser') 13 14eng_w = [] 15eng_elems = soup.select('.eng') 16for i,elem in enumerate(eng_elems): 17 texteng = elem.getText() 18 eng_w.append(texteng) 19 #print(i,elem) 20 21jp_w = [] 22jp_elems = soup.select('.jap') 23for i,elem in enumerate(jp_elems): 24 textjp =elem.getText() 25 jp_w.append(textjp) 26 #print(i,elem) 27 28#print(jp_w) 29#print(eng_w) 30 31 32a = soup.find_all('div',attrs={'class':'eng'}) 33#print(a) 34 35b = soup.find_all('div',attrs={'class':'jap'}) 36#print(b) 37 38c = soup.find_all('table',attrs={'class':'tangotable'}) 39#print(c)
開発環境
windows10
python3.7
anaconda
> divorce :離婚 の行で毎回終了してしまいます。
> それ出力がうまくいきません。
「soup」の中身がそこまでなのではないですか?
URLから requests で読み込んだだけでは、4件しか無いですね。
「単語ぜんぶ見る」というボタンで、JavaScript を実行して続きを表示しているので、JavaScript が実行できない requests では取得できません。
Selenium 等の JavaScript が実行できる方法を使用する必要があります。
Selenium 等の JavaScript が実行できる方法を調べ、実行してみました。driver.execute_script("xxxxxxxx")のxに「単語ぜんぶ見る」のonclick="loadScript(15);gtag('event', 'click', {'event_category': 'quiz', 'event_label': 'tangoindex'});"をコピペし実行してみましたがonclick内のloadScript に対してloadScript is not definedというエラーが出ました。
回答1件
あなたの回答
tips
プレビュー