我无法通过代理从使用 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 非常不完整,仅显示 head 和 body 的外括号:
html
Out[3]: '<html><head></head><body></body></html>'
还有dummy.html
写入磁盘的文件不显示上面行中显示的任何其他内容。
我迷路了,这是我尝试过的
- 当我运行它时它确实有效
options.add_argument('--proxy-server=%s' %PROXY)
线。所以我确信它是代理。但代理连接本身似乎没问题(我没有收到任何代理连接错误 - 而且我确实从网站获取了外部框架,对吧?所以驱动程序请求通过并返回给我)
- 不同的 URL:不仅 Whatismyip.com 失败,任何其他页面也失败 - 尝试了不同的新闻媒体,例如 CNN 甚至谷歌 - 除了头部和身体括号之外,几乎任何网站都没有返回任何内容。这不可能是任何 javascript/iframe 问题,对吧?
- 不同的等待时间(本文确实not help: 让 Selenium 等待 10 秒 https://stackoverflow.com/questions/45347675/make-selenium-wait-10-seconds),最多 60 秒 - 而且我的连接速度超快,
我对连接有什么误解?
driver.page_source 并不总是通过 selenium 返回您期望的内容。它可能不是完整的 dom。这在 selenium 文档和各种 SO 答案中都有记录,例如:https://stackoverflow.com/a/45247539/1387701 https://stackoverflow.com/a/45247539/1387701
Selenium 尽最大努力在获取页面源时提供页面源。只有高度动态的页面,这通常会限制其返回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)