资源简介

# 一个使用selemium爬取小说的代码 理论上使用selemium可以爬取任何站点的资源.可以说是万能的网络爬虫了.这里是演示代码,业务逻辑请自己实现. 也可以用来做Web程序的自动化测试.

资源截图

代码片段和文件信息

#  -*- coding: utf-8 -*-
import os
import sys
__project_dir__ = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
if __project_dir__ not in sys.path:
    sys.path.append(__project_dir__)
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.select import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver import FirefoxProfile
from selenium.webdriver import FirefoxOptions
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.webdriver import FirefoxWebElement
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver import ChromeOptions
from mail_module import send_mail
from log_module import get_logger
from selenium.webdriver import Chrome
import time
import datetime


“““
https://chromedriver.storage.googleapis.com/index.html?path=2.35/
你也可以自行搜索chromedriver的下载地址解压是个可执行文件放到chrome的目录即可.
一般ubuntu下面chrome的目录是/opt/google/chrome/
“““


logger = get_logger()
# chrome_driver = “/opt/google/chrome/chromedriver“  # chromedriver的路径
chrome_driver = os.path.join(__project_dir__ “resource/chromedriver“)  # chromedriver的路径
firefox_driver = os.path.join(__project_dir__ “resource/geckodriver“)  # firfoxdriver的路径
os.environ[“ChromeDriver“] = chrome_driver  # 必须配置否则会在execute_script的时候报错.
# browser = webdriver.Chrome(chrome_driver)
# wait = WebDriverWait(browser 10)


def get_browser(headless: bool = True browser_class: int = 1) -> Firefox:
    “““
    获取一个浏览器
    :param headless:
    :param browser_class: 浏览器种类0是谷歌 1 是火狐 服务器端不能使用谷歌
    :return:
    “““
    “““
    firefox的headless浏览器
    因为headless的浏览器的语言跟随操作系统为了保证爬回来的数据是正确的语言
    这里必须设置浏览器的初始化参数
    注意,使用headless必须先安装对应浏览器正常的版本然后再安装headless版本
    比如火狐的headless
    下载火狐的geckodriver驱动。(当前文件夹下已经有一个了)地址是:
    https://github.com/mozilla/geckodriver/releases
    下载后解压是一个geckodriver 文件。拷贝到/usr/local/bin目录下,然后加上可执行的权限
    sudo chmod +x /usr/local/bin/geckodriver
    chrome的headless浏览器
    https://chromedriver.storage.googleapis.com/index.html?path=2.35/
    你也可以自行搜索chromedriver的下载地址解压是个可执行文件放到chrome的目录即可.
    一般ubuntu下面chrome的目录是/opt/google/chrome/
    据说使用root权限运行的话chrome的headless浏览器会报异常.而firefox的headless浏览器不会!
    “““
    if browser_class == 1:
        profile = FirefoxProfile()
        profile.set_preference(“intl.accept_languages“ “zh-cn“)
        options = FirefoxOptions()
        options.add_argument(“--headless“)
        if headless:
            try:
                browser = Firefox(firefox_profile=profile executable_path=firefox_driver firefox_options=options)
            except Exception as e:
                title = “{} Firefox headless浏览器打开失败“.format(datetime.datetime.now())
                content = “错误原因是:{}“.format(e)
                send_mail(title=title content=content)
                logger.exception(e)
           

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-30 01:45  selenium爬虫演示代码\
     文件         237  2018-10-30 01:45  selenium爬虫演示代码\readme.md
     目录           0  2018-10-23 07:25  selenium爬虫演示代码\resource\
     文件     8103592  2018-05-29 15:44  selenium爬虫演示代码\resource\chromedriver
     文件    12212417  2018-10-04 13:18  selenium爬虫演示代码\resource\geckodriver
     文件       10911  2018-10-30 01:42  selenium爬虫演示代码\browser_module.py

评论

共有 条评论