Selenium使用代理IP&无头模式访问网站
短信预约 -IT技能 免费直播动态提醒
Selenium使用代理IP&无头模式访问网站
很多防爬机制会自动检测ip访问的频率,超过设定的次数,就会被封,这个时候就需要使用代理ip来解决这个问题了
代码如下:
#!/usr/bin/env python
# coding: utf-8
from selenium import webdriver
class Proxy(object):
def __init__(self):
self.proxy_ip = 'http://代理ip地址:端口'
self.browser = self.getbrowser()
self.getpage(self.browser)
def getbrowser(self):
options = webdriver.ChromeOptions()
# 设置代理
desired_capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER.copy()
desired_capabilities['proxy'] = {
"httpProxy": self.proxy_ip,
# "ftpProxy": self.proxy_ip, # 代理ip是否支持这个协议
# "sslProxy": self.proxy_ip, # 代理ip是否支持这个协议
"noProxy": None,
"proxyType": "MANUAL",
"class": "org.openqa.selenium.Proxy",
"autodetect": False
}
# 使用无头模式
options.add_argument('headless')
browser = webdriver.Chrome(chrome_options=options,
executable_path=r'D:\chromedriver_2.41\chromedriver.exe',
desired_capabilities=desired_capabilities)
return browser
def getpage(self, browser):
# 打开目标网站
browser.get("https://www.baidu.com")
# 对整个页面进行截图
browser.save_screenshot('百度.png')
# 打印网站的title信息
print(browser.title)
# 检测代理ip是否生效
browser.get("http://httpbin.org/ip")
# 获取当前所有窗口集合(list类型) --- 因为打开多个窗口
handles = browser.window_handles
# 切换到最新的窗口
browser.switch_to_window(handles[-1])
# 打印新窗口网页的内容
print(browser.page_source)
if __name__ == '__main__':
Proxy()
运行程序,显示打印的是代理ip地址,则表示使用代理成功
还会自动截图
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341