• Python+Selenium模拟人工抓取数据


    Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

    1、安装Python3.5或以上版本

    打开https://www.python.org/

    Win:根据你的Windows版本(64位还是32位)从Python的官方网站下载Python,运行下载的exe安装包。特别要注意勾上Add Python 3.X to PATH,然后点“Install Now”即可完成安装。

    Mac:  系统自带的Python版本是2.X,从Python官网下载Python 3.X的安装程序,下载后双击运行并安装会替换掉2.X;

    2、安装selenium

    Win:pip install selenium

    Mac:  pip3 install selenium

    3、安装webdriver

    推荐Chrome,http://chromedriver.storage.googleapis.com/index.html

    webdriver浏览器版本对应

    Webdriver版本    支持的Chrome版本
    v2.41    v67-69
    v2.40    v66-68
    v2.39    v66-68
    v2.38    v65-67
    v2.37    v64-66
    v2.36    v63-65
    v2.35    v62-64
    v2.34    v61-63
    v2.33    v60-62

    Win:复制webdriver到Python安装目录下

    Mac:复制webdriver到/usr/local/bin目录下

    4.运行

    启动Chrome浏览器:

    from selenium import webdriver
    
    browser = webdriver.Chrome()
    browser.get('http://www.baidu.com/')

     5.实践,根据课程列表,抓取每节课介绍详情

    # -*- coding: utf-8 -*-
    from selenium import webdriver #调用 Chrome 浏览器
    from selenium.webdriver.common.keys import Keys #调用键盘按键操作需要引入keys 包
    from selenium.webdriver.common.action_chains import ActionChains #鼠标事件
    from selenium.webdriver.support import expected_conditions as EC #expected_conditions判断当前页面的是否有XX。由于这个模块名称比较长,所以为了后续的调用方便,重新命名为EC了
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait #显性等待,程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间
    import os,time
    
    browser = webdriver.Chrome() #打开谷歌
    browser.implicitly_wait(30)  # 隐性等待,最长等30秒
    browser.get("https://www.beijingfundtown.com/cloud-class/course") #输入地址
    #'''判断是否至少有1个元素存在于dom树中,如果定位到就返回列表'''
    instance = WebDriverWait(browser,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.cur-left-con')))
    # browser.minimize_window() #将浏览器最小化显示
    opt = webdriver.ChromeOptions()            # 创建Chrome参数对象
    opt.headless = True              # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
    # for循环enumerate()(单词意思是枚举的意思)是python中的内置函数
    for i, ins in enumerate(instance):
        try:
            href = ins.find_element_by_tag_name('a').get_property('href')
            # ins.click()
            b = webdriver.Chrome(options=opt) #把Chrome设置成可视化无界面模式
            b.get(href)
            time.sleep(1)
            print(b.find_element_by_id("desc").text)
            b.quit()
        except Exception as e:
            print(str(e)+str(i))
        time.sleep(1)
    #browser.maximize_window() # 浏览器全屏显示
    
    time.sleep(1)
    browser.quit()

  • 相关阅读:
    读书笔记——读《构建之法:现代软件工程》第13~17章
    读《构建之法》十一,十二章有感
    男神女神配 社区交友网 —— 之 主页 详细解说
    典型用户和场景
    最终版本
    用户调研
    第9-11组总体评价
    第二次sprint
    读《构建之法》8-10章
    第一个Sprint
  • 原文地址:https://www.cnblogs.com/hiit/p/14722554.html
Copyright © 2020-2023  润新知