【问题标题】:Selenium with proxy returns empty website带代理的 Selenium 返回空网站
【发布时间】:2021-04-10 07:24:27
【问题描述】:

我无法通过代理从带有 selenium 的站点中获取页面源 HTML。这是我的代码

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import codecs
import time

import shutil

proxy_username = 'myProxyUser'
proxy_password = 'myProxyPW'
port = '1080'
hostname = 'myProxyIP'

PROXY = proxy_username+":"+proxy_password+"@"+hostname+":"+port

options = Options()
options.add_argument("--headless")
options.add_argument("--kiosk")
options.add_argument('--proxy-server=%s' %PROXY)

driver = webdriver.Chrome(r'C:\Users\kingOtto\Downloads\chromedriver\chromedriver.exe', options=options)

driver.get("https://www.whatismyip.com")
time.sleep(10)
html = driver.page_source
f = codecs.open('dummy.html', "w", "utf-8")
f.write(html)

driver.close()

这会导致 HTML 非常不完整,只显示头部和正文的外部括号:

html
Out[3]: '<html><head></head><body></body></html>'

此外,写入磁盘的dummy.html 文件不显示上一行中显示的任何其他内容。

我迷路了,这是我尝试过的

  1. 当我在没有options.add_argument('--proxy-server=%s' %PROXY) 行的情况下运行它时它确实有效。所以我确定它是代理。但代理连接本身似乎没问题(我没有收到任何代理连接错误 - 加上我确实从网站获得了外框,对吗?所以驱动程序请求通过并返回给我)
  2. 不同的 URL:不仅 whatismyip.com 失败,任何其他页面也失败了 - 尝试了不同的新闻媒体,如 CNN 甚至谷歌 - 除了头部和身体括号外,几乎没有任何网站返回任何内容。不可能是任何 javascript/iframe 问题,对吧?
  3. 不同的等待时间(这篇文章没有帮助:Make Selenium wait 10 seconds),最长 60 秒 -- 加上我的连接速度非常快,

我对连接有什么误解?

【问题讨论】:

    标签: python selenium proxy


    【解决方案1】:

    driver.page_source 并不总是通过 selenium 返回您所期望的。它可能不是完整的 dom。这记录在 selenium 文档和各种 SO 答案中,例如: https://stackoverflow.com/a/45247539/1387701

    Selenium 尽最大努力在获取页面源时提供它。只有高度动态的页面,这通常会受到限制。

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 2022-01-23
      • 2015-06-10
      • 2015-10-15
      • 2017-02-03
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多