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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Scrapy

Scrapyは、Pythonで開発されたオープンソースソフトウェアです。スクレイピングという、Webサービスから必要な情報を取り出したり自動操作をしたりする技術を使うものです。

Q&A

3回答

963閲覧

scrapyでtextを読み取れない

bunbun3264

総合スコア6

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Scrapy

Scrapyは、Pythonで開発されたオープンソースソフトウェアです。スクレイピングという、Webサービスから必要な情報を取り出したり自動操作をしたりする技術を使うものです。

0グッド

1クリップ

投稿2018/05/25 17:05

前提・実現したいこと

クローラーを作る練習として、様々な銀行の住宅ローンの金利情報を並べるクローラーを設計しようと思っています。

■質問内容
ソニー銀行の住宅ローンページにて(http://moneykit.net/visitor/rate/hl.html)
scrapy shell を使い、xpathの特定をしているのですが、金利情報が何度やっても結果が[]で帰ってきます。
どうしたら金利の数値を取得できますでしょうか。
また、当該ページの金利情報ように、表であらわされている情報を取得する方法もご教示頂きたいです。

発生している問題・エラーメッセージ

リストソニー銀行の住宅ローンのページにある、金利情報の表の情報を取りたいと考えています。
上記URL内の、新規購入で自己資金10%以上、
変動セレクト住宅ローン、2018年05月、変動金利
0.457% の部分をクロームの右クリックの検証で開発者ツールを開き、そこからxpathをコピー
//*[@id="ratetbl01"]/tbody/tr[1]/td[1]
という値が出てきます。
下記コードをscrapyに打ち込んでも、空の[]がかえってきます。

該当のソースコード

scrapy shell http://moneykit.net/visitor/rate/hl.html
response.xpath('//*[@id="ratetbl01"]/tbody/tr[1]/td[1]').extract()

試したこと

金利以外の文言については、右クリックの検証から取得するxpathで取得できることを確認済み
他の銀行の住宅ローンページ(三菱東京UFJ)でも同様に金利情報の数値がxpathを入力しても取得できません。

補足情報(FW/ツールのバージョンなど)

python 3.6.4
scrapy 1.5.0

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

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

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

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

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

guest

回答3

0

スクレイピングツールを使ってみたら?
デキる人は知っている!Webスクレイピング用のソフト30選

投稿2018/07/16 03:42

編集2019/03/12 02:04
Yuki-Sakuraba

総合スコア163

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

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

0

クロール先のWebサイトから返却されたHTMLにはまだ該当の要素が描画されておらず、ブラウザ上でjavascriptが実行されることで取得されたい数値が後から埋め込まれるような挙動をします。

数値が全て描画された後のHTMLを取得するためにはWebブラウザでHTML内で指定されているjavascriptを実行する必要があるのですが、scrapyにはWebブラウザの機能が含まれていないためご質問のような事象が起きています。

これを解決するために何らかのWebブラウザを介して該当のサイトにアクセスする必要がありますが、scrapyではsplashというヘッドレスブラウザを経由してクロールができる以下の便利なプラグインが提供されています。

こちらを利用すればjavascript実行後のHTMLを取得することができるので試してみてください。
https://github.com/scrapy-plugins/scrapy-splash

投稿2019/03/12 10:44

Chanmoro

総合スコア97

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

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

0

tBodyがjavascriptで描画されている

<script type="text/javascript">$('#ratetbl01').setratetbl('RD23001666666','RD23601555555');</script>

ので、selenium等を利用してページ内javascriptを実行する必要があります。

投稿2018/05/28 13:35

calkinos

総合スコア452

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

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

bunbun3264

2018/05/31 12:04

ご回答ありがとうございます。 jsの知識が皆無なため、seleniumを利用して実行する必要がありますという意味が理解できません。 ここで1から教えて頂くわけにもいかないと思いますので、参考になるページなどご教示頂けませんでしょうか。 よろしくお願いいたします。
calkinos

2018/06/05 07:17

参考になるページの提示はちょっと難しいのですが、 jsを利用すると、もともとページ内に存在しない情報をあとから付与出来ます。 今回欲している情報はそのあとから付与されるものです。 具体的には今回の該当ページですと http://moneykit.net/loan/script/NBP64F510.js この中に金利情報が入っています。 RD23001666666やRD23601555555で検索してみると良いでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問