zoukankan      html  css  js  c++  java
  • 一.爬虫简介

    一.爬虫简介

    1.什么是爬虫

    一个模仿浏览器行为向服务器发送请求并且获得响应数据的应用程序.
    
    流程:发起请求===>获取数据===>解析数据===>存储数据
        
        常见请求库:requests
        常见解析库:
        常见存储库:mongodb
            
    常见的抓包工具:网页的network,Fiddler,mitmproxy  
        
    console控制台:
        document.charset(查看js的解码方式)
    

    2.http协议格式

    '''
    请求:Request URL:
    	REquest Method:
    		"GET":
    			?拼接参数
    		"POST":
    			请求体:
    				1.formdata
    				2.json
    				3.files
    	请求头:
        	cookies:(保存信息,主要用于记录用户登录状态)
        	user-agent:用户身份
        	referer:告知服务器,请求从何来(防盗链)
        	服务器特有字段
    '''	
    
    '''
    响应:
    	status code:状态码
    	响应头:
    		location:重定向的url
    		set-cookie:设置cookie
    		服务器特定字段
    	响应体:
        	1.html
        	2.二进制:图片,视频,音频
        	3.json
        	4.jsonp:允许跨域
    	
    
    

    3.常见库

    请求库:requests
    	安装:pip install requests
    
    #get请求        
    requests.get() 
    	参数:'''
    		url:
    		headers={
    		"user-agent":"xxx",
    		...
    		}
    		params={}:url参数
    		cookies={}(优先使用headers中的cookies参数)
    		proxies = {"http":"http://..."}	:代理ip
    		timeout = 0.5 超时时间
    		allow_redirects = True 允许重定向
    		'''
            
    #post请求 
    requests.post()
    	参数:'''
    		前面6个与get请求一样
    		data = {}
    		json = {}/'123'	注:json与data只能存在一种
    		files = {"files":open("文件地址","rt",encoding=utf-8)}
    		'''
            
    响应:
        response = requests.get()
        response.url				:请求地址
        response.text				:响应文本信息
        response.encoding='gbk'		 :文本编码方式
        response.content			:二进制
        response.json				:转json格式,相当于json.loads(response.text)
        response.status_code		:状态码
        response.headers			:响应头
        response.history			:[响应对象1,...],重定向才有
            
    自动保存cookie的请求:
        
    	session = requests.session()
    			r = session.get(......)或
    			r = session.post(......)
    	  补充:(保存cookie到本地)
    	  	import http.cookiejar as cookielib
    	  	session.cookie = cookielib.LWPCookieJar()
    	  	session.cookie.save(filename='1.txt')	保存cookie至本地文件
    	  	session.cookies.load(filename='1.txt')   本地文件取出cookie 
    

    4.常用解析语法

    CSS选择器:
        类选择器(.类名)
        id选择器(#id值)
        标签选择器(标签)
        后代选择器(祖先 后代):表示祖先下面的所有后代都会被选择
        子选择器(父>子):表示父标签下的所有子代标签会被选择
        兄弟选择器(兄~弟):表示兄标签相邻的弟弟标签会被选择,且必须是同级
        属性选择器([属性名]、[属性名=属性值]:精确选择,有空格都不行、[属性名^=属性值]、[属性名$=属性值]、[属性名*=属性值]):正则匹配
        群组选择器(选择器1,选择器2):代表or
        多条件选择器(选择器1选择器2):代表and
        伪类选择器(选择器:active/hover/first-child/visited):含有指定的属性才会被选择
        
    XPATH选择器:略    
    

    5.常见的反爬手段

    检测浏览器headers
    ip封禁
    图片验证码
    滑动模块
    js轨迹
    前端反调试
    
  • 相关阅读:
    linux命令行
    mybatis中#{}和${}的区别
    @InitBinder的作用
    mui 实用封装销毁页面
    【SQLite】简单的基本使用步骤
    常用的一些操作方法
    【HttpWeb】Post和GET请求基本封装
    【接口验证】特性验证参数
    小谈单例模式
    vs下开端口直接调试iis
  • 原文地址:https://www.cnblogs.com/bruce123/p/11695135.html
Copyright © 2011-2022 走看看