• 爬虫基础


    爬虫基础

    爬虫定义

    模拟浏览器向后端发送请求,获取数据,解析并且获得我想要的数据,然后存储:
    发送请求--获取数据--解析数据--存储数据
    

    http协议里需要关注的

    请求:
    	URL:指明了我要去哪里
    	method:
    		GET:传递数据:?&拼在URL后面
    		POST:请求体(formdata、files、json)
         请求头:
         	Cookie:用于身份验证
         	Referer:告诉服务器从哪里来
         	User-Agent:告诉服务器你的身份
    
    响应:
    	Status Code:
    		2xx:成功
    		3xx:重定向
    	响应头:
    		location:跳转地址
    		set_cookie:设置cookie
    	响应体:
    		1.html代码
    		2.二进制:图片,视频,音乐
    		3.json格式
    	
    

    常用请求库、解析库、数据库的用法

    请求库

    requests库
    	安装:pip install requests
    	请求:
    		get请求:
    			响应对象 = requests.get(...)
    			参数:
    				url:请求路径
    				headers = {}  优先级高于cookie
    				cookies = {}  
    				params = {}  参数
    				proxies = {'http':'http://端口:ip'}  代理
    				timeout = 0.5  超时时间(秒级)
    				allow_redirects = False  不允许重定向
    		post请求:
    			响应对象 = requests.post(...)
    			参数:
    				url:请求地址
    				headers = {}
    				cookies = {}
    				data = {}
    				json = {}
    				files = {'files':open('文件名','rb')}
    				timeout = 0.5
    				allow_redirects = False
    		自动保存cookie的请求:
    			session = request.session()
    			r = session.get(...)
    			r = sesison.post(...)
    			补充:(保存cookie到本地)
    			import http:cookiejar as cookielib
    			session.cookies = cookielib.LWPCookieJar()
    			session.cookies.save(filename='文件名')  保存
    			session.cookies.load(filename='文件名')  解析
    	
    	响应:
    		r.url:路劲
    		r.text:文本内容
    		r.encoding:编码
    		r.content:二进制
    		r.json():转json格式
    		r.status_code:状态码
    		r.headers:请求头
    		r.cookies
    		r.history:重定向之前的路径
    			
    

    常用解析语句

    css选择器

    1.类选择器:
    	.类 {}
    2.id选择器:
    	#id {}
    3.标签选择器:
    	标签 {}
    4.后代选择器:
    	标签 标签 {}
    5.子选择器:
    	标签>标签
    6.属性选择器
    	[属性] {}   所有属性 
    	[属性=值1]  所有属性值等于值1
    	[属性^=值]  属性以值开头
    	[属性$=值]  属性以值结尾
    	[属性*=值]  包含值
    7.群组选择器
    	标签1,标签2...   or
    8.多条件选择器
    	标签1标签2...     and
    

    requests-html

    安装:pip install requests-html
    请求:
    	from requests_html import HTMLSession
    	session = HTMLSession()
    	参数:
    		browser.args = [
                '--no-sand',
                '--user-agent = xxxxx'
    		]   
    	响应对象 = session.request(...,method='')
    	响应对象 = session.get(...)
    	响应对象 = session.post(...)
    响应、参数跟requests模块一样
    

    解析

    html对象属性

    r.html.absolute_links   绝对链接(http开头的)/将相对改成绝对/去重
    r.html.links            原样链接
    r.html.base_url         基础链接
    r.html.html             原html文件
    r.html.text             获取页面上所有的文本内容
    r.html.encoding         解码格式
    r.html.raw_html         原生html(二进制数据流)
    r.pq                    pyquery对象
    
  • 相关阅读:
    201920201学期 20192410《网络空间安全专业导论》第一周学习总结
    201920201学期 20192410《网络空间安全专业导论》第二周学习总结
    Oracle trunc()函数的用法
    20130528
    让ListBox控件支持拖动
    幸福是什么
    实例解析C++/CLI程序进程之间的通讯
    Boost源码剖析之:容器赋值assign
    VC++ MFC 多线程及线程同步
    MFC下窗口分割和文字输出的实现
  • 原文地址:https://www.cnblogs.com/yanminggang/p/11310684.html
Copyright © 2020-2023  润新知