python - soup - Cabeceras personalizadas en Phantomjs Selenium WebDriver
web scraping python examples (2)
Según this , ahora es posible modificar los encabezados. Cajeros automáticos necesito modificar Accept-Language en PhantomJS webdriver. Este código no funciona
DesiredCapabilities.PHANTOMJS[''phantomjs.page.customHeaders.Accept-Language''] = ''ru-RU''
driver = webdriver.PhantomJS()
¿Es posible configurar Phantomjs para enviar mi encabezado? no me importa dónde: dentro de ghostdriver, phantomjs o phantomjs-webdriver.
Escribo un ejemplo completo para configurar todos los encabezados, tamaño de ventana y proxy en selenium phantomjs:
from selenium import webdriver
def init_phantomjs_driver(*args, **kwargs):
headers = { ''Accept'':''text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'',
''Accept-Language'':''zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'',
''User-Agent'': ''Mozilla/5.0 (Windows NT 6.2; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0'',
''Connection'': ''keep-alive''
}
for key, value in headers.iteritems():
webdriver.DesiredCapabilities.PHANTOMJS[''phantomjs.page.customHeaders.{}''.format(key)] = value
webdriver.DesiredCapabilities.PHANTOMJS[''phantomjs.page.settings.userAgent''] = ''Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36''
driver = webdriver.PhantomJS(*args, **kwargs)
driver.set_window_size(1400,1000)
return driver
def main():
service_args = [
''--proxy=127.0.0.1:9999'',
''--proxy-type=http'',
''--ignore-ssl-errors=true''
]
driver = init_phantomjs_driver(service_args=service_args)
driver.get(''http://cn.bing.com'')
Nota:
userAgent
se establece en phantomjs.page.settings.userAgent
en lugar de phantomjs.page.customHeaders
La última versión ( 1.9.1 ) de PhantomJS es la versión del 5 de junio de 2013. La solicitud de extracción se fusionó el Jun/23/2013 .
Si está utilizando la versión 1.9.1 de PhantomJS, los encabezados personalizados no funcionarán.
Tienes que construir phantomjs por ti mismo o esperar hasta que phantomjs fusione ghostdriver cambie y lance una nueva versión.
- Clon PhantomJS repositorio
- Repositorio clon fantasma
- copie el ghostdriver / src / * a phantomjs / src / ghostdriver recursivamente
- construir phantomjs
Usando phantomjs recién compilado obtuve el siguiente resultado:
from selenium import webdriver
webdriver.DesiredCapabilities.PHANTOMJS[''phantomjs.page.customHeaders.Accept-Language''] = ''ru-RU''
driver = webdriver.PhantomJS()
driver.get(''http://httpbin.org/headers'')
print(driver.page_source)
...
{
"headers": {
"Connection": "close",
"Host": "httpbin.org",
"Accept-Encoding": "gzip",
"Accept-Language": "ru-RU",
"User-Agent": "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.10.0 (development) Safari/534.34",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
}
...
ACTUALIZAR
Utilice PhantomJS 1.9.2+ .