zoukankan      html  css  js  c++  java
  • 爬虫 登录开心网,登录人人网

    爬取前需要安装 Selenium&PhantomJS 

      Selenium 是一个 Web 的自动化测试工具, 最初是为网站自动化测试而开发的, 类型像我们玩游戏用的按键精灵, 可以按指定的命令自动操作, 不同是 Selenium 可以直接运行在浏览器上, 它支持所有主流的浏览器(包括 PhantomJS 这些无界面的浏览器) 。Selenium 可以根据我们的指令, 让浏览器自动加载页面, 获取需要的数据, 甚至页面截屏, 或者判断网站上某些动作是否发生。Selenium 自己不带浏览器, 不支持浏览器的功能, 它需要与第三方浏览器结合在一起才能使用。 但是我们有时候需要让它内嵌在代码中运行, 所以我们可以用一个叫 PhantomJS的工具代替真实的浏览器。

    可以从 PyPI 网站下载 Selenium 库 https://pypi.python.org/simple/selenium , 也可以用第三方管理器 pip 用命令安装: pip install selenium==2.48.0

    Selenium 官方参考文档: http://selenium-python.readthedocs.io/index.html

    PhantomJS           phantom: 美 ['fæntəm], 鬼怪, 幽灵。
    PhantomJS 是一个基于 Webkit 的“无界面”(headless)浏览器, 它会把网站加载到内存并执行页面上的 JavaScript, 因为不会展示图形界面, 所以运行起来比完整的浏览器要高效。如果我们把 Selenium 和 PhantomJS 结合在一起, 就可以运行一个非常强大的网络爬
    虫了, 这个爬虫可以处理 JavaScrip、 Cookie、 headers, 以及任何我们真实用户需要做的事情。注意: PhantomJS 只能从它的官方网站 http://phantomjs.org/download.html) 下载。 因为PhantomJS 是一个功能完善(虽然无界面)的浏览器而非一个 Python 库, 所以它不需要像 Python 的其他库一样安装, 但我们可以通过 Selenium 调用 PhantomJS 来直接使用。下载--解压, 然后,设置环境变量: C:UsersczDownloadsphantomjs-2.1.1-windowsin打开终端命令行, 输入: phantomjs, 能够进行到 phantomjs 命令行, 则表示安装成功

     

    #无界面浏览器
    from selenium import webdriver
    #xpath 提取数据
    from lxml import etree
    #登录界面
    url='http://login.kaixin001.com/?url=https%3A%2F%2Fsecurity.kaixin001.com'
    #CTRL+单击PhantonJs,可更改位置
    drive=webdriver.PhantomJS()
    #获取url
    drive.get(url)
    #输出页面
    # print(drive.page_source)
    #使用登录和密码框的name属性
    drive.find_element_by_id('userinput').send_keys('账号')
    drive.find_element_by_id('passwordinput').send_keys('密码')
    #截图
    drive.save_screenshot('kaixin.png')
    #找到登录按钮的id,单击
    drive.find_element_by_id('btn_dl').click()
    #将文件写入kaixin.html
    with open('kaixin.html','w',encoding='utf-8') as file:
        file.write(drive.page_source)
    
    #
    # #如果登录页面有验证码需要用截图来查看验证码来进行登录
    # #读取页面
    # with open('kaixin.html','r',encoding='utf-8') as file:
    #     html=file.read()
    # #利用xpath找到验证码的图片连接
    # srr=etree.HTML(html)
    # imgg=srr.xpath('//div[@class="l"]/img/@src')
    # print(imgg)
    #
    # sa=input('输入验证码:')
    # #清除输入框中的信息
    # drive.find_element_by_id('userinput').clear()
    # drive.find_element_by_id('passwordinput').clear()
    # #重新输入用户名密码和验证码并单级
    # drive.find_element_by_id('userinput').send_keys('账号')
    # drive.find_element_by_id('passwordinput').send_keys('密码')
    # drive.find_element_by_id('code').send_keys(sa)
    # drive.find_element_by_id('btn_dl').click()
    #
    # drive.save_screenshot('kaixin3.png')
    # #验证码格式
    # # http://www.kaixin001.com/interface/getcaptcha.php?key=1539574548166&keytype=login
    # # http://www.kaixin001.com/interface/getcaptcha.php?key=1539575201279&keytype=login

    登录人人网

    #爬虫  登录人人网案例
    import requests
    session=requests.session()
    url='http://www.renren.com/PLogin.do'
    data={
        'email':'账号',
        'password':'密码'
    }
    response=session.post(url,data)
    html=session.get(url='http://www.renren.com/968293374/profile')
    with open('renren.html','w',encoding='utf-8') as ff:
        ff.write(html.text)
  • 相关阅读:
    MAVEN学习-第一个Maven项目的构建
    MAVEN学习笔记-maven的获取和安装
    Hibernate中的锁机制
    java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(2)
    java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(1)
    java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容
    开篇:勇敢踏上这第一步
    有关嵌入式linux的注意点总结
    《nodejs开发指南》微博实例express4.x版
    JavaScript中的数据类型转换
  • 原文地址:https://www.cnblogs.com/zxg-1997/p/9801014.html
Copyright © 2011-2022 走看看