Selenium webdriver 使用selenium webdriver获取网页的移动版本而不是桌面版本
我在Debian远程服务器上使用headless firefox,以便使用selenium webdriver获取一些数据,并在稍后传递给scrapy。我得到的不是桌面版,而是移动版的网页,我正试图从中删除数据。我需要桌面版!我知道我需要发送正确的用户代理字符串,我就是这样做的:Selenium webdriver 使用selenium webdriver获取网页的移动版本而不是桌面版本,selenium-webdriver,web-scraping,scrapy,phantomjs,Selenium Webdriver,Web Scraping,Scrapy,Phantomjs,我在Debian远程服务器上使用headless firefox,以便使用selenium webdriver获取一些数据,并在稍后传递给scrapy。我得到的不是桌面版,而是移动版的网页,我正试图从中删除数据。我需要桌面版!我知道我需要发送正确的用户代理字符串,我就是这样做的: def call_via_proxy(PROXY_HOST,PROXY_PORT): fp = webdriver.FirefoxProfile() # Direct = 0, Manu
def call_via_proxy(PROXY_HOST,PROXY_PORT):
fp = webdriver.FirefoxProfile()
# Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5
fp.set_preference("network.proxy.type", 1)
fp.set_preference("network.proxy.http",PROXY_HOST)
fp.set_preference("network.proxy.http_port",int(PROXY_PORT))
fp.set_preference("general.useragent.override","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0")
fp.update_preferences()
return webdriver.Firefox(firefox_profile=fp)
#create webdriver
driver = call_via_proxy("us.proxymesh.com","31280")
driver.get(response.url)
该代码在我的台式机(win7)上运行良好,但在需要运行代码的服务器(debian)上,我得到了一个移动版本的网页。如果我使用phantomJS,也会发生同样的情况
#set user agents for PhantomJS
user_agent = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) ")
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = user_agent
driver = webdriver.PhantomJS('/usr/local/share/phantomjs-1.9.7-linux-i686/bina/phantomjs',desired_capabilities=dcap)
driver.get(response.url)
有没有办法通过selenium从网页获取HTTP响应代码?我想知道这里怎么了?我认为这与平台依赖性无关??有什么建议吗?我对一些屏幕大小不同的移动响应模板有这个问题。在这个例子中,幻影似乎对我有自己的一套规则。强制桌面浏览器大小(
driver.manage().window.Size
)似乎对我有效
我没有这方面的Java代码,但在C中,这将是:
_driver.Manage().Window.Size = new Size(1024,768);
我似乎记得有一个
Dimensions
值可以传递。我这样做,桌面页面再次出现 我自己也有同样的问题。我设置了userAgent
,但没有设置。默认值为400x300。一旦我设置了这个,我就可以得到桌面版本了
下面是一个JS示例实现,您应该能够将其应用到您的解决方案中
var webPage = require('webpage');
var page = webPage.create();
//This is the Chrome 55 UA.
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36';
//THE ANSWER. This is just my test server resolution.
page.viewportSize = {
width: 1600,
height: 900
};
page.open('http://www.example.com', function(status) {
if(status === "success") {
//Saves an image of the page.
page.render('example.png');
}
//Tidy up.
phantom.exit();
});
您是否已尝试确认用户代理已更改?例如,使用Java看起来像这样
driver.manage().window().fullscreen()