🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

Scrapy

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

Q&A

1回答

2118閲覧

Python scrapy shell url でHTMLを抽出しても、データが抽出できない件、また、view(response)しても何も表示されない件

Guamstreet

総合スコア31

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

Scrapy

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

0グッド

0クリップ

投稿2019/11/21 07:17

実現したいこと

Python " scrapy shell " コマンドで、目的の要素を抽出したい。


環境:
Anaconda3
Windows10 Home 64ビット

Scrapyを勉強しています。色々なサイトから、ターゲットデータを抽出する検証を、"scrapy shell " コマンドを使って行っているのですが、以下のナンバーズ4当選番号サイトについて、どう言う訳か、抽出する事ができません。


みずほ銀行『当せん番号案内(ナンバーズ4)』
みずほ銀行 当選番号ナンバーズ4


ナンバーズ4の、最新当選番号を抽出しようとして、試したコマンドです。

AnacondaPrompt

1【 Command 】 2(base) C:\Users\○○○>Scrapy shell https://www.mizuhobank.co.jp/retail/takarakuji/numbers/numbers4/index.html 3 4 5【 Output 】 62019-11-21 15:12:36 [scrapy.utils.log] INFO: Scrapy 1.6.0 started (bot: scrapybot) 72019-11-21 15:12:36 [scrapy.utils.log] INFO: Versions: lxml 4.4.1.0, libxml2 2.9.9, cssselect 1.1.0, parsel 1.5.2, w3lib 1.21.0, Twisted 19.7.0, Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)], pyOpenSSL 19.0.0 (OpenSSL 1.1.1d 10 Sep 2019), cryptography 2.7, Platform Windows-10-10.0.17763-SP0 82019-11-21 15:12:36 [scrapy.crawler] INFO: Overridden settings: {'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0} 92019-11-21 15:12:36 [scrapy.extensions.telnet] INFO: Telnet Password: ea280c4300ff5121 102019-11-21 15:12:36 [scrapy.middleware] INFO: Enabled extensions: 11['scrapy.extensions.corestats.CoreStats', 12 'scrapy.extensions.telnet.TelnetConsole'] 132019-11-21 15:12:36 [scrapy.middleware] INFO: Enabled downloader middlewares: 14['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 15 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 16 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 17 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 18 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 19 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 20 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 21 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 22 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 23 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 24 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 252019-11-21 15:12:36 [scrapy.middleware] INFO: Enabled spider middlewares: 26['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 27 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 28 'scrapy.spidermiddlewares.referer.RefererMiddleware', 29 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 30 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 312019-11-21 15:12:36 [scrapy.middleware] INFO: Enabled item pipelines: 32[] 332019-11-21 15:12:36 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023 342019-11-21 15:12:36 [scrapy.core.engine] INFO: Spider opened 352019-11-21 15:12:37 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.mizuhobank.co.jp/retail/takarakuji/numbers/numbers4/index.html> (referer: None) 36[s] Available Scrapy objects: 37[s] scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc) 38[s] crawler <scrapy.crawler.Crawler object at 0x0000016D71681B08> 39[s] item {} 40[s] request <GET https://www.mizuhobank.co.jp/retail/takarakuji/numbers/numbers4/index.html> 41[s] response <200 https://www.mizuhobank.co.jp/retail/takarakuji/numbers/numbers4/index.html> 42[s] settings <scrapy.settings.Settings object at 0x0000016D71681808> 43[s] spider <DefaultSpider 'default' at 0x16d719a4b08> 44[s] Useful shortcuts: 45[s] fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed) 46[s] fetch(req) Fetch a scrapy.Request and update local objects 47[s] shelp() Shell help (print this help) 48[s] view(response) View response in a browser

AnacondaPrompt

1【 Command 】 2In [1]: view(response)・・・【1】 3 4【 Output 】 5Out[1]: True 6 7 8 9【 Command 】 10In [2]: response.xpath('//*[@id="mainCol"]/article/section/section/section/div/div[1]/table[ 11 ...: 1]/tbody/tr[2]/td/strong').extract()・・・【2】 12 13【 Output 】 14Out[2]: ['<strong class="js-lottery-number-pc"></strong>']

 

【 質問1】

上記【1】で、" view(response) " コマンドでサイト表示させると、添付図の様に『表示に時間がかかっております。再度、ページを更新するか、しばらくお待ちください』と表示され、表の中の、当選番号等の中身が、全く表示されません(添付図②部分)
当選番号を表示させるには、どのようにすれば良いでしょうか?

また、この時のURLバーを見てみると、" file:///C:/Users/○○○/AppData/Local/Temp/tmpw5jxlicy.html "(○○○はユーザー名)と、一時ファイルとして表示されています(添付図①部分)

(但し、他のサイトで、任意のデータ抽出して成功した時も、URLは一時ファイルの場所を、表示しておりました)
イメージ説明 

【 質問2 】

上記【2】は、最新の当選番号のxpathを、chromeの検証モードでコピぺし、それを元にコマンドを打って、出力させたものです。しかし、肝心の当選番号が表示されません。
これは、何が原因で、どのようにすれば当選番号を表示させる事が出来るのでしょうか?




以上、上記2点の質問につき、解決策をご教示頂きたいです。

どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

当選番号はあとから生成しているので
scrapyならscrapy-splashでレンダリングしてからスクレイピングしたらいいです

https://github.com/scrapy-plugins/scrapy-splash

スクレイピングするだけなら数字の5312が回数なので変更すると
CSVファイルをダウンロードできます
https://www.mizuhobank.co.jp/retail/takarakuji/numbers/csv/A1005312.CSV

投稿2019/11/21 08:36

barobaro

総合スコア1286

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

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

Guamstreet

2019/11/21 09:14

barobaroさん 早速の回答、どうもありがとうございます! なるほど。と言うと、当選番号を、あとから生成している為、生成する前のページ情報をスクレイピングしてしまっているのが、当選番号が表示されない原因と言う事でしょうか? それから、せっかくご回答下さっているのですが、私が、スクレイピング初心者で有るため『scrapy-splashでレンダリングしてからスクレイピング』と言われても、具体的に、どうすれば良いか?分かりません。申し訳ありません。 GitHubのリンク先も頂きましたが、これを、どの様に料理すれば、私の希望が叶うのか? ほんとに申し訳ないのですが、このあたりを具体的にご教示頂けないでしょうか? または、具体的に説明している参考サイトなど、教えて頂けたら嬉しいです。 一応、私なりに、" scrapy splash Windows10 " でググって見たんですが、私が理解出来る様なサイトが見当たりませんでした(泣) どうぞよろしくお願いいたします。
Guamstreet

2019/11/21 09:18 編集

大変、失礼致します。 あと、もう一つ、なぜ?当選番号をあとから生成していると言う事が、お分かりになられたのですか? どこぞのコードをみれば、それが、すぐに分かったりするのでしょうか? 勉強の為、そのあたりも、上記と併せて、ご教示頂けますと、大変うれしいです。 重ね重ね、よろしくお願いいたします。 失礼致しました。
barobaro

2019/11/21 10:30

CTRL+Uでブラウザのソースが見れるので 目的のテキストこの場合なら当選番号がなければあとから生成してるとわかります。
Guamstreet

2019/11/22 01:12

barobaroさん ご回答、ほんとうにありがとうございました! 頂きましたヒントを元に、解決してみます。 それから、CTRL+U、これは、全然知りませんでした。 教えて下さってありがとうございます。 凄く便利です。すぐにソースが確認できて。 CTRL+Uでソースを見ても、当選番号のテキストが含まれていません。 と言う事は、JavaScriptとかで、当選番号を表示していると言う事が分かるのですね! 勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問