質問するログイン新規登録

質問編集履歴

2

問題をわかりやすくしました

2017/02/28 14:53

投稿

RyuSA
RyuSA

スコア131

title CHANGED
File without changes
body CHANGED
@@ -1,14 +1,14 @@
1
- ###Pythonでスクレイピングしたい!
1
+ ###PythonでのWebスクレイピング
2
- PythonモジュールのBeautifulSoupやseleniumを用いてWebスクレイピングをやりたい。
3
2
  簡単なWebサイトのスクレイピングはできたものの、JavascriptでレンダリングされているようなWebページでのスクレイピングで苦戦中です。
4
3
 
5
- ###発生している問題・エラーメッセージ
4
+ ###発生している問題
6
5
  今、某魚拓サイトをスクレイピングしようとしています。
7
6
  挑戦中のWebページは以下のページです。(スクレイピング先の内容に特に意味はないです……)
8
7
 
9
8
  ページ:[http://megalodon.jp/2014-0421-0310-13/sucrose.hatenablog.com/entry/2014/04/21/000909](http://megalodon.jp/2014-0421-0310-13/sucrose.hatenablog.com/entry/2014/04/21/000909)
10
9
 
11
- 本当は、該当Webページの<iframe ...> (onloadで書き込まれる) </iframe>の中身を取ってきたいのですが、素直にソースコードを持ってきてもダメなようです。(以下のソースコード参照)
10
+ 該当Webページの<iframe ...> (魚拓部分) </iframe>の中身を取ってきたいのですが、素直にソースコードを持ってきてもダメなようです。
11
+ 具体的には、以下のソースのように持ってきても<iframe...></iframe>と中身が入っていない状態で返ってきてしまうようです。
12
12
 
13
13
  上手いやり方を知っている方、ご教授願いませんか?
14
14
 
@@ -21,6 +21,7 @@
21
21
  url = "http://megalodon.jp/2014-0421-0310-13/sucrose.hatenablog.com/entry/2014/04/21/000909"
22
22
  driver = webdriver.PhantomJS()
23
23
  driver.get(url)
24
+ // driver.page_sourceからすでにiframe内にはないようです
24
25
  htmls = lxml.html.fromstring(driver.page_source)
25
26
  sources = htmls.cssselect('iframe')
26
27
  for source in sources:

1

不要なものを削除

2017/02/28 14:53

投稿

RyuSA
RyuSA

スコア131

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ページ:[http://megalodon.jp/2014-0421-0310-13/sucrose.hatenablog.com/entry/2014/04/21/000909](http://megalodon.jp/2014-0421-0310-13/sucrose.hatenablog.com/entry/2014/04/21/000909)
10
10
 
11
- 本当は、該当Webページの<iframe ...> (onloadで書き込まれる) </iframe>の中身を取ってきたいのですが、どうやらこの中身はJavaScript制御されているようで、素直にソースコードを持ってきてもダメなようです
11
+ 本当は、該当Webページの<iframe ...> (onloadで書き込まれる) </iframe>の中身を取ってきたいのですが、素直にソースコードを持ってきてもダメなようです。(以下のソースコード参照)
12
12
 
13
13
  上手いやり方を知っている方、ご教授願いませんか?
14
14
 
@@ -25,11 +25,4 @@
25
25
  sources = htmls.cssselect('iframe')
26
26
  for source in sources:
27
27
  print(source.text)
28
- ```
28
+ ```
29
-
30
- ###試したこと
31
- 最初はrequestsモジュールを用いていましたが、Javascriptレンダリングには対応できていないと聞いたので
32
- ヘッドレスブラウザのphantomjsを用いてやってみようとしていました。
33
-
34
- ###補足情報(言語/FW/ツール等のバージョンなど)
35
- Python3.6.0