• 数据开发_Python获取数据


    常见的分类

    分类方式一

    1.不用登录就能爬取的网站,
    2.需要先登录的网站 
      这一类网站又可以分为:
         01.只需输入帐号密码、
    	 02.除了帐号密码还需输入或点击验证码等类型。
     01.只需输入帐号密码、
       只需要输入账号密码的情况
       介绍模拟登录常用的 3 种方法。
        001.POST 请求方法:需要在后台获取登录的 URL并填写请求体参数,然后 POST 请求登录,相对麻烦;
        002.添加 Cookies 方法:先登录将获取到的 Cookies 加入 Headers 中,最后用 GET 方法请求登录,这种最为方便;
        003.Selenium 模拟登录:代替手工操作,自动完成账号和密码的输入,简单但速度比较慢
    

    分类方式二

      静态页面: 静态页面的时候直接查看response一般就是网页的全部代码
     动态页面其实是相对于静态页面而言的 客户端语言改变页面的 HTML 和 CSS 元素
     通常的手法都是监听、抓包、分析js文件
      爬虫处理动态页面的两种方式
      01.-- 逆向工程 模拟发包。 稳定性和效率
          Ajax请求的具体链接,直接得到Ajax请求得到的数据
    	    AJAX 使用的 XMLHttpRequest 的对象与服务器通信
    		  JavaScript 中调用 XMLHttpRequest 对象。 HTTP 请求由 XMLHttpRequest 对象发送到服务器。 
    		  XMLHttpRequest 对象用于和服务器交换数据
       02.--用现成的包操作浏览器 --selenium模拟浏览器
                  ghost.py  用 webkit 我们需要有pyqt或者是PySide
    			  一般就是用 Selenium + PhantomJS
    Selenium
       测试代码输入操作给 webdriver 
       webdriver 再去控制浏览器,最终达到的效果就是代码实现对浏览器的操作
     下载浏览器驱动:
    	例如火狐的 FirefoxDriver  geckodriver 
    	谷歌的     ChromeDriver 
    	IE的驱动    IEdriver   IEDriverServer
    	  三大浏览器驱动 driver
    	     webdriver.Chrome()
    

    示例代码

            from selenium import webdriver
            browser = webdriver.Chrome()
            browser.get('http://www.baidu.com/')
            
            启动火狐浏览器
            from selenium import webdriver
            browser = webdriver.Firefox()
            browser.get('http://www.baidu.com/')
                      
            启动IE浏览器  http://selenium-release.storage.googleapis.com/index.html
    		# #设置环境变量
    		# driver=webdriver.Ie(executable_path="./../lib/IEDriverServer.exe")  
    		# IEDriverServer 的版本号和Selenium的版本号一定要一致
            from selenium import webdriver
            browser = webdriver.Ie()
            browser.get('http://www.baidu.com/')   
    

    具体操作:

     01.找到 POST 请求的 URL
     02.构造参数构造 利用 Requests.post 方法请求登录网站
      import requests
      headers = {'User-Agent': 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'}
      data = {'identity':'@@.com',  'password':'test2020'}
      url ='https://www.'
      session = requests.Session()
      session.post(url,headers = headers,data = data)
      response = session.get('http://rad',headers = headers)
      print(response.status_code)
      print(response.text)
        
      import requests
      headers = {
           'User-Agent': 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
           'Cookie': '你的cookie',}
      url = 'https://www.ion='
      session = requests.Session()
      response = session.get('http://rent', headers=headers)
      print(response.status_code)
    

    网页相关内容

       Referer:浏览器通过此来判断你从哪一个网页跳转过来
       referer: https://www.cnblogs.com/
       User Agent 中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,
           是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识
    			 浏览器识别
    	   User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 
      Cookie 指的是当你浏览某网站时,网站存储在你电脑上的一个小文本文件,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。
         它记录了你的用户ID,密码、浏览过的网页、停留的时间等信息,用于用户身份的辨别
    	HTTP协议是无状态
    	   Cookie 正是这样的一段随HTTP请求一起被传递的额外数据,用于维护浏览器和服务器的会话
    	   Cookie是基于浏览器的  Http Cookie  Cookie的时间由服务器的设置决定
    	   第一方Cookie和第三方Cookie
    

    常用的包

     lxml      Python XML 库
     Requests: 让 HTTP 服务人类
     Pandas(python强大的数据处理库)
     from selenium import webdriver
    

    参考

       python+Selenium用ie打不开浏览器解决办法 https://blog.csdn.net/qq_31857075/article/details/100748456
       详解爬虫模拟登陆的三种方法 https://blog.csdn.net/zhusongziye/article/details/91353222
  • 相关阅读:
    前台加请求头token,后台接收
    MD5加密工具类
    SpringBoot实现请求拦截(@Aspect切面类和自定义拦截器)
    Swagger2添加统一header-token
    idea + groovy + mybatis 自动生成 Dao、mappings 和 实体类
    JAVA算法编程题50题及答案
    Python 1基础语法一(注释、行与缩进、多行语句、空行和代码组)
    ENVI 安装
    Python之GUI编程(Tkinter))
    Python 0(安装及初步使用+学习资源推荐)
  • 原文地址:https://www.cnblogs.com/ytwang/p/14185025.html
Copyright © 2020-2023  润新知