数据开发_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
原文地址:https://www.cnblogs.com/ytwang/p/14185025.html