精华内容
下载资源
问答
  • python 爬虫之selenium可视化爬虫

    万次阅读 多人点赞 2020-08-05 19:52:11
    之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的爬虫方式 selenium爬虫主要是模拟人的点击操作 selenium驱动浏览器并进行操作的过程是可以观察到的 就类似于你在看着别人在帮你操纵你...

    前文回顾

    一文带你了解Python爬虫(一)——基本原理介绍
    一文带你了解Python爬虫(二)——四种常见基础爬虫方法介绍

    之所以把selenium爬虫称之为可视化爬虫

    主要是相较于前面所提到的几种网页解析的爬虫方式

    selenium爬虫主要是模拟人的点击操作

    selenium驱动浏览器并进行操作的过程是可以观察到的

    就类似于你在看着别人在帮你操纵你的电脑,类似于别人远程使用你的电脑

    当然了,selenium也有无界面模式

    快速入门

    selenium基本介绍:

    selenium 是一套完整的web应用程序测试系统,

    包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)
    和测试的并行处理(Selenium Grid)。

    Selenium的核心Selenium Core基于JsUnit,
    完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
    selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,

    爬虫中主要用来解决JavaScript渲染问题。

    用python写爬虫的时候,主要用的是selenium的Webdriver,

    #安装selenium库
    pip install selenium
    #安装对应浏览器驱动
    # 我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏览器
    from selenium import webdriver
    print(help(webdriver))
    
    适用浏览器:
    PACKAGE CONTENTS
        android (package)    blackberry (package)    chrome (package)
        common (package)     edge (package)          firefox (package)
        ie (package)         opera (package)         phantomjs (package)
        remote (package)     safari (package)        support (package)    webkitgtk (package)
    #这里要说一下比较重要的PhantomJS,
    #PhantomJS是一个而基于WebKit的服务端JavaScript API,
    #支持Web而不需要浏览器支持,
    #其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。
    #PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试
    

    谷歌浏览器驱动下载地址
    注意对应版本号,chrome地址栏输入chrome://version/ 查看自己的Chrome版本
    我使用的是anaconda 下载好后丢入anaconda3\Scripts文件夹下就可以了
    如果是其他ide如:pycharm、VScode但加载的还是anaconda的集成python,依然可以这么操作

    简单测试

    from selenium import webdriver
    # #声明浏览器对象
    browser1 = webdriver.Chrome()
    browser2 = webdriver.Firefox()
    # #访问页面
    browser1.get("http://www.baidu.com")
    print(browser1.page_source)
    #关闭当前窗口
    browser1.close()
    

    元素定位

    要想对页面进行操作,首先要做的是选中页面元素,
    比较常见的八种元素定位方式,如下表

    定位一个元素定位多个元素定位方式描述
    find_element_by_idfind_elements_by_id通过元素 id进行定位
    find_element_by_namefind_elements_by_name通过元素 名称进行定位
    find_element_by_xpathfind_elements_by_xpath通过xpath路径进行定位
    find_element_by_link_textfind_elements_by_link_text通过完整超链接文本进行定位
    find_element_by_partial_link_textfind_elements_by_partial_link_text通过部分超链接文本进行定位
    find_element_by_tag_namefind_elements_by_tag_name通过标记名称进行定位
    find_element_by_class_namefind_elements_by_class_name通过类名称进行定位
    find_element_by_css_selectorfind_elements_by_css_selector通过css选择器进行定位

    更详细定位方式可以参考:《史上最全!Selenium元素定位的30种方式》

    页面操作

    1.表单填充

    # 找到用户名输入用户名
    user = drive.find_element_by_name("LoginForm[username]")
    user.send_keys(username)
    # 找到密码输入密码
    pwd=drive.find_element_by_id("LoginForm_password")
    pwd.send_keys(password)
    # 点击登录按钮实现登录
    drive.find_element_by_class_name("login_btn").click()
    

    2.窗口句柄

    简单讲,句柄就是浏览器上方每一个窗口栏的唯一标识
    在这里插入图片描述

    #获取当前窗口所有句柄
    handles = drive.window_handles
    #通过句柄 切换到第2个标签页
    drive.switch_to.window(handles[2])
    """操作完成"""
    #关闭当前窗口
    driver.close() 
    #通过句柄 切换到第1个标签页
    drive.switch_to.window(handles[0])
    time.sleep(random.uniform(2,3))
    

    3.url加载和获取

    #url加载
    drive.get(url)
    # 获取当前页面url并断言
    currentPageUrl = driver.current_url
    

    4.cookie处理

    • get_cookies:获取cookie信息
    • add_cookie:添加cookie信息
    drive.get("http://www.baidu.com")
    cookie = {'name':'foo','value':'bar'}
    drive.add_cookie(cookie)
    drive.get_cookies()
    

    等待方式

    现在很多网站采用 Ajax技术
    无法确定网页元素什么时候能被完全加载
    所以网页元素的选取比较困难
    此时就需要设置等待(等待网页加载完成)

    selenium有两种等待方式:

    • 显式等待
    • 隐式等待

    1.显式等待
    显式等待是一种条件触发式等待
    直到设置的某一条件达成时才会继续执行
    可以设置超时时间,如果超过超时时间元素依然没被加载,就会抛出异常

    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    drive = webdriver.Chrome()
    url = 'http://www.baidu.com/'
    drive.get(url)
    
    try:
    	WebDriverWait(self.driver,10).until(EC.presence_of_element_located(By.ID,"LoginForm[username]"))  #显示等待
    except:
      print('%s页面未找到元素'% loc)
    

    以上代码加载 'http://www.baidu.com/'页面
    并定位id为"LoginForm[username]"的元素
    设置超时时间10秒,webDriverWait默认会500ms检测一下元素是否存在

    selenium提供了一些内置的用于显示等待的方法,
    位于expected_conditions类中,详细见下表

    内置方法功能
    title_is判断当前页面的title是否等于预期内容
    title_contains判断当前页面的title是否包含预期字符串
    presence_of_element_located判断某个元素是否被加到了dom树里,
    并不代表该元素一定可见
    presence_of_all_element_located判断是否至少有1个元素存在于dom树里
    visibility_of_element_located判断某个元素是否可见
    visibility_of判断某个元素是否可见
    invisibility_of_element_located判断某个元素是否不存在于dom树里或不可见
    text_to_be_present_in_element判断元素中的text是否包含了预期的字符串
    text_to_be_present_in_element_value判断元素中的value属性是否包含了预期字符
    frame_to_be_available_and_switch_to_it判断该frame是否可以切换进去,如果可以,
    返回True并切换进去,否则返回False
    element_to_be_clickable判断某个元素是否可见并且是enable的
    staleness_of等待某个元素从dom树中移除
    element_to_be_selected判断某个元素是否被选中了,一般用于下拉列表
    element_located_to_be_selected判断某个元素是否被选中了,一般用于下拉列表
    element_selection_state_to_be判断某个元素的选中状态是否符合预期
    element_located_selection_state_to_be判断某个元素的选中状态是否符合预期
    alert_is_present判断页面上是否存在alert框

    2.隐式等待

    隐式等待是在尝试定位某个元素时,如果没能立刻发现,就等待固定时长
    类似于socket超时,默认设置是0秒,即相当于最长等待时长

    在浏览器界面直观感受是:
    等待直到网页加载完成(地址栏这个地方不是× 变成如下)时继续执行,
    网页加载超过设置等待时长才报错
    在这里插入图片描述
    使用方法

    from selenium import webdriver
    drive = webdriver.Chrome()
    url = 'http://www.baidu.com/'
    #设置最大等待时长 10秒
    drive.implicitly_wait(10)
    drive.get(url)
    user = drive.find_element_by_name("LoginForm[username]")
    

    3.线程休眠
    time.sleep(time)是比较常用的线程休眠方式
    为了避免风险,我个人比较喜欢随机休眠
    time.sleep(random.uniform(4,5))

    扩展程序加载

    # 设置好应用扩展
    chrome_options.add_extension(extension_path)
    #添加下载路径
    #download.default_directory:设置下载路径    profile.default_content_settings.popups:设置为 0 禁止弹出窗口
    prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory':tmp_path}
    chrome_options.add_experimental_option('prefs', prefs)
    

    写在最后的拉票环节
    最近参加了CSDN官方组织的“GEEK+”原创·博主大赛
    历经重重筛选,终于上榜TOP 50
    原创不易,帮忙投个免费的票
    支持一下:点击投票
    谢谢大家!!!

    展开全文
  • 可视化爬虫

    2018-08-28 09:27:47
    可视化爬取网络数据,更可观的爬取手段,你值得拥有,
  • 主要介绍了python可视化爬虫界面之天气查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 关于可视化爬虫的笔记 谨以此笔记记录我对可视化爬虫的学习过程以及对可视化爬虫的理解探索。 什么是可视化爬虫 可视化爬虫指的就是selenium爬虫,因为其通过对网页元素的定位来模拟人的点击操作。其操控网页进行...

    关于可视化爬虫的笔记

    谨以此笔记记录我对可视化爬虫的学习过程以及对可视化爬虫的理解探索。

    什么是可视化爬虫

    可视化爬虫指的就是selenium爬虫,因为其通过对网页元素的定位来模拟人的点击操作。其操控网页进行运作的过程是可以观察到的。类似于一个机器人在帮你操控你的电脑一样。如果你不想看到他的运行界面也是可以的,selenium爬虫也是有无界面模式的。

    怎么用可视化爬虫

    安装:pip3 install selenium
    如果网速太慢的话可以尝试这样写:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium
    selenium爬虫是支持多种浏览器驱动的,我这里主要介绍的是Chrome浏览器的配置使用方法:
    1.首先在浏览器地址栏里输入chrome://version/ 查看自己的浏览器版本。然后去谷歌浏览器驱动下载地址下载对应的驱动版本。下载地址为:http://chromedriver.storage.googleapis.com/index.html
    2.下载完之后如果将其驱动程序放入你所使用的软件文件夹下就好了,例如我使用的是python3.8版本,直接将其放入python3.8的安装文件目录下即可。
    如图所示
    3.简单测试一下安装是否成功。
    from selenium import webdriver #导入模块
    browser1 = webdriver.Chrome()#声明浏览器对象
    browser1.get(“http://www.baidu.com”)#访问页面
    print(browser1.page_source)#输出页面信息
    browser1.close()#关闭当前窗口

    展开全文
  • 以webmagic为内核的分布式可视化爬虫框架,参考webmagic-avalon的架构,目标是提供可分散部署的爬虫框架,以及可视化的爬虫管理界面。 目前分为三个模块: maple-admin,为webmagic-avalon中的管理员中断,对应一个...
  • Portia可视化爬虫部署

    千次阅读 2017-10-26 16:25:06
    可视化爬虫Portia安装和部署踩过的坑如果是 ubuntu16.04 ,尝试过本地安装,但是因为老是提示 apt-get 安装错误:Err:15 http://ppa.launchpad.net/beineri/opt-qt551-trusty/ubuntu xenial/main amd64 Packages ...

    安装

    如果是 ubuntu14.04 可以参考
    可视化爬虫Portia安装和部署踩过的坑

    如果是 ubuntu16.04 ,尝试过本地安装,但是因为老是提示 apt-get 安装错误:

    Err:15 http://ppa.launchpad.net/beineri/opt-qt551-trusty/ubuntu xenial/main amd64 Packages
      404  Not Found
    Ign:16 http://ppa.launchpad.net/beineri/opt-qt551-trusty/ubuntu xenial/main i386 Packages
    Ign:17 http://ppa.launchpad.net/beineri/opt-qt551-trusty/ubuntu xenial/main all Packages
    Ign:18 http://ppa.launchpad.net/beineri/opt-qt551-trusty/ubuntu xenial/main Translation-en_US
    Ign:19 http://ppa.launchpad.net/beineri/opt-qt551-trusty/ubuntu xenial/main Translation-en

    没办法,只能 docker 安装

    sudo apt-get install docker.io
    sudo apt-get install python-pip
    pip install docker-compose
    
    启动 docker
    docker run -d -v /data/workspace/portia/portia_projects:/app/slyd/data:rw -p 9001:9001 --name portia-2.0.5 scrapinghub/portia:portia-2.0.5
    
    注意:
    其中的 /data/workspace/portia/portia_projects 路径是在本地的创建项目的文件夹
    而 /app/slyd/data 是 docker 运行中镜像内的文件夹路径

    如果一切顺利,那么可以在 9001 端口看到网页

    lsof -i:9001 查看 9001 端口
    COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    docker-pr 5277 root    4u  IPv6 163606      0t0  TCP *:9001 (LISTEN)

    参考:
    博客

    展开全文
  • C#使用WPF可视化爬虫源代码,ETL抽取工具代码。
  • 用PyQt5开发可视化爬虫软件

    千次阅读 2019-03-14 14:30:02
    用PyQt5开发可视化爬虫软件 一些小伙伴知道怎么写爬虫,但是却不知道怎么给爬虫加上一个可视化操作界面,只是在IDE或者命令行窗口中运行py文件然后查看输出结果;而另一些可能知道怎么写简单的界面,但是却不知道...

    用PyQt5开发可视化爬虫软件

    一些小伙伴知道怎么写爬虫,但是却不知道怎么给爬虫加上一个可视化操作界面,只是在IDE或者命令行窗口中运行py文件然后查看输出结果;而另一些可能知道怎么写简单的界面,但是却不知道怎么给程序加上实用性的功能。

     

    网易云课程地址(复制到浏览器中):https://study.163.com/course/introduction/1209157821.htm

     

    本教程(即《快速掌握PyQt5》的实战篇)会带大家了解如何将具有实用性的爬虫代码运用到PyQt5开发的界面上,讲解主要分开七个步骤:

    教程中写的是一个用来爬取猫眼电影Top100的小型软件,笔者把该爬虫软件从开始开发到最后打包需要用到的知识点已经全部放在教程中了,读完本教程的小伙伴可以将知识点运用到其他软件开发上面(当然用到的界面框架还得是PyQt5)。

     

    麻雀虽小,五脏俱全。下面是一些截图:

    相信学习完本教程的同学一定会有收获的!一起加油!(*•̀ㅂ•́)و 

    课程链接:用PyQt5开发可视化爬虫软件

    注:如果你对PyQt5完全不懂的话,建议可以先去看下笔者写的《快速掌握PyQt5》系列文章。有所了解后再去学习本教程会比较好。

     

     

    展开全文
  • Scrapy爬虫的确是好使好用,去过scrapinghub的官网浏览一下,更是赞叹可视化爬虫的犀利。scrapinghub有一系列的产品,开源了大部分项目,Portia负责可视化爬虫的编辑,SpiderCloud负责云端爬虫的部署,Scrapy是实现...
  • PyQt5和Scrapy开发可视化爬虫(二)

    千次阅读 2019-04-18 11:30:27
    PyQt5和Scrapy开发可视化爬虫(二) 使用PyQt5开发Scrapy爬虫的界面,利用CrawlerRunner启动爬虫,并利用PyQt5信号传递爬虫信息到界面 在上一篇Pyqt5和Scrapy开发可视化爬虫中, 使用了在Qt子线程中,利用...
  • 可视化爬虫监控系统

    千次阅读 2019-01-31 11:17:36
    当你部署很多爬虫以后你就需要一个可视化爬虫监控系统。来方便查看每个爬虫的入库数据和工作状态等… 本文就手把手一步步教你如何搭建这样一个可视化监控系统。本文不讲解爬虫的相关技术实现,而是从实用性的角度...
  • PyQy5可视化爬虫.rar

    2020-09-03 11:45:20
    这是一个用PyQt实现的小案例,下载即可运行。虽然是功能有些单一,你们下载了可以自己加功能拓展,希望能帮助到刚刚学习爬虫的同学。
  • 之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的爬虫方式 selenium爬虫主要是模拟人的点击操作 selenium驱动浏览器并进行操作的过程是可以观察到的 就类似于你在看着别人在帮你...
  • 之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的爬虫方式 selenium爬虫主要是模拟人的点击操作 selenium驱动浏览器并进行操作的过程是可以观察到的 就类似于你在看着别人在帮你...
  • 原标题:用python打造可视化爬虫监控系统,酷炫的图形化界面本文并不是讲解爬虫的相关技术实现的,而是从实用性的角度,将抓取并存入 MongoDB 的数据 用 InfluxDB 进行处理,而后又通过 Grafana 将爬虫抓取数据情况...
  • 利用爬虫技术批量且自动得获取和处理信息。对于整体情况可以多一个侧面去了解。比如获得本地某房产信息网上房屋交易价格信息、获得网上商城当前的爆款商品、获得各个机场的实时流量、获得热点城市的火车票情况、...
  • 文章目录scrapinghub 可视化抓取 portia环境搭建全过程一、 install_deps:安装系统级依赖二、 install_splash: 安装splash三、 install_python_deps:安装python依赖四、 安装ember.js五、 安装并配置nginx六、 ...
  • Pyqt5和Scrapy开发可视化爬虫

    千次阅读 2019-02-27 18:17:38
    做了一个电商的爬虫,仅做学习使用 记录一下遇到的坑: 整个开发步骤为,利用scrapy爬几大电商网站的商品图片,然后开发UI,根据输入的信息,执行不同的爬虫。坑就主要在这个地方 1. 如何向scrapy爬虫传递配置信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,367
精华内容 12,546
关键字:

可视化爬虫

爬虫 订阅