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

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

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

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

Python

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

Q&A

解決済

2回答

7278閲覧

動的ページのWebスクレイピング

gksh7

総合スコア40

Python 3.x

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

Python

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

0グッド

2クリップ

投稿2019/07/30 09:20

前提・実現したいこと

python 初心者です。

スクレイピングをしていますが、
対象のサイトだけ、スクレイピングができずに、進めなくなってしまいました。

対象サイトは動的ページでPHPで生成されています。

※対象サイトのURLをお伝えしたいところですが、
諸事情により公開することができません。

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

実行をすると
下記のようなエラーが発生しました。

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/phantomjs/webdriver.py:49: UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless ' <html><head></head><body></body></html>

該当のソースコード

test1.py

python

1from selenium import webdriver 2from bs4 import BeautifulSoup 3import time 4 5 6driver = webdriver.PhantomJS() 7url = 'https://~~~' #とあるURL 8driver.get(url) 9 10time.sleep(5) 11 12html = driver.page_source.encode('utf-8') 13soup = BeautifulSoup(html, "html.parser") 14 15print(soup) 16

試したこと

時間を遅らせてみたりしたのですが、HTMLは取得できませんでした。

また、他のURLで試したところ、
(phantomjsのwarningはでますが) HTMLは取得できました。
このサイトだけ、どうもうまくいきません。

<html><head></head><body></body></html> 上記は、 取得できていないということだと思うのですが、 何か考えられる原因はありますでしょうか? また、対策はありますでしょうか?

詳しい方、ご教示いただけますと助かります。

何卒よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

Headlessにしてないからでは?

【Python】SeleniumでHeadless Chromeを使おう
https://qiita.com/derodero24/items/9e9567790bde9e4b9d0c

python

1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3import chromedriver_binary 4 5# ブラウザーを起動 6options = Options() 7 8# Chromeのバイナリを指定 9options.binary_location = '/usr/bin/google-chrome' 10 11options.add_argument('--headless') 12driver = webdriver.Chrome(options=options) 13 14# Google検索画面にアクセス 15driver.get('https://www.google.co.jp/') 16 17# htmlを取得・表示 18html = driver.page_source 19print(html) 20 21# ブラウザーを終了 22driver.quit()

操作がなければRequests-HTMLの方が簡単です

Requests-HTML
https://html.python-requests.org/

投稿2019/07/30 12:37

barobaro

総合スコア1286

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

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

gksh7

2019/07/30 14:13

ご回答をありがとうございます。 オプションで指定しないといけないんですね。 勉強になります。 Request-HTMLというのもあるんですね。 参考にします! 記述していただいたコードを実行してみたのですが、 下記のエラーになってしまいました。 重ねて恐縮ですが、 もし、解決のヒントがありましたら、ご教示いただけると助かります。 どうぞよろしくお願いいたします。 ▼エラー Traceback (most recent call last): File "test2.py", line 9, in <module> driver = webdriver.Chrome(options=options) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__ desired_capabilities=desired_capabilities) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: no chrome binary at /usr/bin/google-chrome
gksh7

2019/07/31 01:07

ありがとうございます。 参考にご掲示いただいたURLで頑張ってみます。
guest

0

ベストアンサー

多分SSLの問題

https://codeday.me/jp/qa/20190222/300115.html

後、HeadlessChromeを使ってください(PhantomJS使用禁止)

投稿2019/07/30 09:23

yamato_user

総合スコア2321

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

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

gksh7

2019/07/30 09:48

ありがとうございます。 教えていただいたURLを参考に解決しました。 SSLの問題なのですね。 大変たすかりました。 それと、PhantomJS使用禁止ということも勉強になりました。 HeadlessChromeを使って書き換えてみたのですが、 下記のコードを実行するとChromeが立ち上がります。 基本的なことをお伺いしてしまいますが、 立ち上がらないようにするのは、どうしたら良いのしょうか? printだけを実行したいと考えています。 ``` from selenium import webdriver from bs4 import BeautifulSoup import time driver = webdriver.Chrome('/usr/local/bin/chromedriver') url = 'https://~~~' #とあるURL driver.get(url) time.sleep(5) html = driver.page_source.encode('utf-8') soup = BeautifulSoup(html, "html.parser") print(soup) ``` 重ねての質問となり恐縮です。 何卒よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問