爬虫基础

爬虫基础

爬虫定义

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

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对象
posted @ 2019-08-06 17:50  ymg-颜  阅读(90)  评论(0编辑  收藏  举报