Python爬虫:对selenium的webdriver进行简单封装

简介: Python爬虫:对selenium的webdriver进行简单封装

在使用selenium过程中,发现经常需要使用的两个参数user-agent请求头 和 proxy代理,设置需要一大堆代码


requests就比较简单,于是乎 Browser类 就被封装成了类似requests库的一个模块,便于平时爬虫使用


项目说明: PHANTOMJS 和 Chrome 浏览器,获取网页使用


代码示例

# -*- coding: utf-8 -*-
# @File    : browsers.py
# @Date    : 2018-05-30
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.proxy import ProxyType
USER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
class Browser(object):
    """PHANTOMJS 和 Chrome 浏览器,获取网页使用"""
    def __init__(self, browser):
        """
        :param
            browser: 浏览器对象,通过静态方法from_phantomJS 或 from_chrome获取
        """
        self.browser = browser
    @staticmethod
    def from_phantomJS(user_agent=USER_AGENT, proxy=None):
        """获取PhantomJS
        :param user_agent: {str} 请求头
        :param proxy: {str} 代理地址, 如:127.0.0.0:8080
        :return:  browser浏览器对象
        """
        dcap = dict(DesiredCapabilities.PHANTOMJS)
        # 设置user-agent请求头
        dcap["phantomjs.page.settings.userAgent"] = user_agent
        # 禁止加载图片
        dcap["phantomjs.page.settings.loadImages"] = False
        phantomJS = webdriver.PhantomJS(desired_capabilities=dcap)
        # 设置代理
        if proxy != None:
            _proxy = webdriver.Proxy()
            _proxy.proxy_type = ProxyType.MANUAL
            _proxy.http_proxy = proxy
            # 将代理设置添加到webdriver.DesiredCapabilities.PHANTOMJS中
            _proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)
            phantomJS.start_session(webdriver.DesiredCapabilities.PHANTOMJS)
        return Browser(phantomJS)
    @staticmethod
    def from_chrome(user_agent=USER_AGENT, proxy=None):
        """获取Chrome
        :param user_agent: {str} 请求头
        :param proxy: {str} 代理地址, 如:127.0.0.0:8080
        :return:  browser浏览器对象
        """
        options = webdriver.ChromeOptions()
        options.add_argument('lang=zh_CN.UTF-8')
        # 设置user-agent请求头
        options.add_argument('user-agent=%s' % user_agent)
        # 设置代理
        if proxy != None:
            options.add_argument('--proxy-server= %s' % proxy)
            # http://www.baidu.com
        # 图片不加载
        prefs = {
            'profile.default_content_setting_values': {
                'images': 2
            }
        }
        options.add_experimental_option('prefs', prefs)
        chrome = webdriver.Chrome(chrome_options=options)
        return Browser(chrome)
    def get_html(self, url):
        """获取网页文件
        :param url: {str} 网页链接
        :return:  {str} 网页文本
        """
        self.browser.get(url)
        return self.browser.page_source
    @property
    def title(self):
        """获取标题
        :return {str} 网页标题
        """
        return self.browser.title
    def save_screenshot(self, name=None):
        """截图保存
        :param name: {str} 图片名称, 如: "abc.png"
        :return None
        """
        if name == None:
            name = "%s.png" % self.browser.title
        self.browser.save_screenshot(name)
    def close(self):
        """关闭浏览器
        :return None
        """
        self.browser.close()
        self.browser.quit()
if __name__ == '__main__':
    # 这是我自己写的代理ip获取方法
    import proxy_helper
    proxy = proxy_helper.get_ip()
    url = "https://httpbin.org/get?show_env=1"
    # 实例化浏览器
    browser = Browser.from_phantomJS(proxy=proxy)
    html = browser.get_html(url)  # 获取网页
    title = browser.title  # 获取标题
    browser.save_screenshot()  # 截图
    browser.close()  # 关闭浏览器
    # 打印输出
    print(html)
    print(title)
相关文章
|
13天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
14天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
15天前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
23天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
66 6
|
16天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
21天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
41 7
|
24天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
47 6
|
20天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
21天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
117 1
|
23天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
51 4

热门文章

最新文章

下一篇
无影云桌面