質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

535閲覧

実行するタイミングでスクレイピング内容が変わる?

dedede914

総合スコア62

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2023/03/22 01:55

編集2023/03/22 01:56

実現したいこと

google app script でcheerio,parserライブラリを使いスクレイピングをします
https://www.linguee.com/english-spanish/search?source=spanish&query=ser
このサイトで品詞と意味をリストに格納します。
meaning=[ [ 'verb', [ 'be', 'constitute sth.' ] ], [ 'noun, masculine', [ 'being', 'self', 'creature' ] ] ]
meaning=[ [ '品詞1', [ '意味1', '意味2',... ] ], [ '品詞2', [ '意味1', '意味2', '意味3', .... ] ] ]
となるのが目標です。
pythonで書いたコードは思った通りに動作しましたが、google app script用に書き換えたコードは一部(?)思った通りに動きませんでした

前提

pythonで作ったコードをgoogle app scriptで動作するように書き換えました。
ほぼ思った通りに動くんですが、試しにやってみた"ser"という単語のページでは、
2個目の意味の constitute sth. 
が取得できませんでした。他の試したものではもれなく値を取得できました。
おかしいなあと思ってgoogleapp scriptで実行をクリックしまくっていたら、一度だけ2個目の意味の constitute sthを取得できましたがそれ以降は取得できないままです。実行するタイミングで結果が変わることがあったりするんでしょうか。見間違いではなかったと思うのですが、、、
どこが問題なのでしょうか
よろしくお願いします

他に確認した単語です

単語の順番が少し前後してしまいます(levantar)

https://www.linguee.com/english-spanish/search?source=auto&query=pensar

https://www.linguee.com/english-spanish/search?source=spanish&query=que

該当のソースコード

javascript

1function scrapeWebsite() { 2 const verb = "ser"; 3 const url = 'https://www.linguee.com/english-spanish/search?source=spanish&query=' + verb; 4 const response = UrlFetchApp.fetch(url); 5 const html = response.getContentText(); 6 const $ = Cheerio.load(html); 7 8 const divs = $('div.lemma.featured'); 9 const spans = []; 10 const meaning = []; 11 12 divs.each((i, div) => { 13 const span = []; 14 span.push($(div).find('span.tag_wordtype').text()); 15 const tagTrans = $(div).find('span.tag_trans'); 16 const spanNew = []; 17 tagTrans.each((j, tag) => { 18 spanNew.push($(tag).find('a').text()); 19 }); 20 span.push(spanNew); 21 spans.push(span); 22 }); 23 24 for (const span of spans) { 25 const spanNew = []; 26 for (const tag of span[1]) { 27 spanNew.push(tag); 28 } 29 span[1] = spanNew; 30 meaning.push(span); 31 } 32 33 console.log(meaning); 34} 35

python

1verb="ser" 2url='https://www.linguee.com/english-spanish/search?source=spanish&query={}'.format(verb) 3res=requests.get(url) 4soup=BeautifulSoup(res.text,'html.parser') 5divs=soup.find_all('div',class_='lemma featured') 6spans=[] 7meaning=[] 8 9for div in divs: 10 span=[] 11 span.append(div.find('span', class_='tag_wordtype').get_text()) 12 span.append(div.find_all('span', class_='tag_trans')) 13 spans.append(span) 14#spans=[span,span,...] 15#span=["品詞",["<span tag><a tag></span>","<span tag><a tag></span>",...]] 16for span in spans: 17 spanNew=[] 18 for tag in span.pop(1): 19 spanNew.append(tag.find('a').get_text()) 20 span.append(spanNew) 21 meaning.append(span) 22print(meaning)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/03/22 03:08 編集

> 実行するタイミングで結果が変わることがあったりするんでしょうか。 https://www.linguee.com/ のサイトの挙動の質問であれば、外の人に聞いても分からないかと思います。 プログラム処理の質問としても、対象HTMLが同じだがPythonとGASで挙動が違うのか、対象HTMLがそもそも異なるのか、そこさえも不明であれば、なんとも言い様がないです。
guest

回答2

0

ベストアンサー

ご記載のGASのコードを試したところ、結果は、

[ [ 'verb', [ 'be' ] ],
[ 'noun, masculine', [ 'being', 'self', 'creature' ] ] ]
でした。

手動でそのサイトをWindowsのChromeで検索してみると、

イメージ説明
と表示されますので、同じ結果でした。

2個目の意味の constitute sth. 
は確認できませんでした。

投稿2023/03/22 06:47

YellowGreen

総合スコア731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YellowGreen

2023/03/22 17:07

辞書の方もDeepLで随時更新されているということではないでしょうか。
guest

0

みなさん回答ありがとうございました.
同じhtmlを対象としても、ほとんどのhtmlはpythonでもgoogleappscript上でも同じ結果を得ましたが、いくつかのhtmlでは違った結果が返ってきていました。
ですが今一度サイトを確かめてみると、私がさっき見ていたページ内容と異なっていました。
levantarのページでは意味の単語の並び順が違いますし、serのページでは2つ目の意味がなくなっているようでした。今は同じurlで検索してもさっきまで見ていたページは表示されませんでした。YellowGreenさんのものと同じものが表示されます。もしかしたら、サイト側が変更している最中とかだったんですかね、、原因はわからないままですが。。。。

今はpythonもgogglescriptappでもおなじ結果が得られます。
よくわからない質問になってしまいましたが、すみませんでした。コメントしていただいたみなさんありがとうございました。

下のスクリーンショットは、キャッシュで表示されていたserのページのスクリーンショットです
イメージ説明

投稿2023/03/22 16:30

dedede914

総合スコア62

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問