1

我试图从阿迪达斯抓取产品信息,但由于某种原因,当使用 PhantomJS 发出获取请求时,会话挂起并且没有收到响应。我已经尝试过将 Selenium 与 Chrome 一起使用,而在 Chrome 中使用 headless 并且它可以工作。所以我的假设是某种防火墙或浏览器指纹跟踪阻止了 PhantomJS。我需要使用经过身份验证的代理,因此不能选择带有 Chrome 的 selenium。

有没有人可以帮助我使用 PhantomJS 完成这项工作?这是我的原始脚本:

from selenium import webdriver
import base64

username = 'proxyusername'
password = 'proxypassword'
proxy = 'host:port'
service_args = ['--proxy=http://'+str(proxy),
                     '--proxy-type=http'
                    ]
login =str(username)+':'+str(password)
authentication_token = "Basic " + base64.b64encode(login.encode())
capa = webdriver.DesiredCapabilities.PHANTOMJS
capa['phantomjs.page.customHeaders.Proxy-Authorization'] = authentication_token
capa['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'


driver = webdriver.PhantomJS("/usr/local/bin/phantomjs",desired_capabilities=capa, service_args=service_args)
print 'Getting URL'
driver.get('http://www.adidas.co.uk')
print 'Request made'
html_source = driver.page_source

print html_source
4

0 回答 0