Proxy環境下でSelenium Chromeをヘッドレスモードで使用すると、ページの内容が取得できない。
webdriver.chromeのProxyの設定が間違えていたようで、正しく設定することで内容を取得することができた。
SeleniumでChromeにProxyを設定する方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.proxy import Proxy, ProxyType options = webdriver.ChromeOptions() options.add_argument('headless') desired_caps = options.to_capabilities() prox = Proxy() prox.proxy_type = ProxyType.MANUAL #prox.http_proxy = "ip: port" #prox.socks_proxy = "ip: port" prox.ssl_proxy = "ip: port" prox.add_to_capabilities(desired_caps) driver = webdriver.Chrome(desired_capabilities=desired_caps) driver.implicitly_wait(10) # ブラウザでアクセスする driver.get("https://www.google.co.jp/") # HTMLを文字コードをUTF-8に変換してから取得します。 html = driver.page_source.encode('utf-8') driver.close() soup = BeautifulSoup(html, "html.parser") print("---") print("ページのタイトルは" + soup.title.string) print("---") |
Proxy 設定後の実行結果
1 2 3 |
--- ページのタイトルはGoogle --- |
参考:requestsでのProxy設定方法
javascriptで動的に生成された内容を取得する必要がない場合は、こちらでもOK。
1 2 3 4 5 6 7 |
proxies = { "http":"ip:port", "https":"ip:port", } # アクセスするURL r = requests.get("https://www.google.co.jp/", proxies=proxies) |