python爬虫

爬虫原理
模拟请求→拿到数据→根据数据不同的类型用不同的方式解析→存储
 
学习步骤
1、http协议
2、请求库:requests,(urlib3比较复杂,不建议)
    requests请求库只能把页面内容下载本地以后,并不能执行js代码(浏览器可以
    需要分析目标站点策略
3、解析库:re,beautifulsoup,pyquery
4、存储库:文件,MySQL,Mongodb,Redis
5、性能相关:异步IO
6、框架:scrapy
 
Http协议的8种请求
常用:GET  向特定服务端获取数据,数据在url中传输。
常用:POST   向服务端提交数据,数据包含在请求体中,
其他请求方式:HEAD,PUT,DELETE,OPTIONS,TRACE,CONNECT
 
网页的加载过程是:
加载一个网页,通常都是先加载document文档,
在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求
 
请求头
User-Agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户
host
cookies:cookie用来保存登录信息
一般做爬虫都会加上请求头

例如:
User-Agent
Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/56.0
 
Host 请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的TCP端口号。
HTTP Cookie(也叫Web cookie或者浏览器Cookie)是服务器发送到用户浏览器并保存在浏览器上的一块数据,它会在浏览器下一次发起请求时被携带并发送到服务器上。比较典型的,可以它用来确定两次请求是否来自于同一个浏览器,从而能够确认和保持用户的登录状态。Cookie使得基于无状态的HTTP协议记录稳定的状态信息成为了可能。
 
 
请求体
  如果是get方式,请求体没有内容
   如果是post方式,请求体是form data

    ps:
    1、登录窗口,文件上传等,信息都会被附加到请求体内
    2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post 
 
 
响应
 
#1、响应状态
    200:代表成功
    301:代表跳转
    404:文件不存在
    403:权限
    502:服务器错误

#2、respone header
    set-cookie:可能有多个,是来告诉浏览器,把cookie保存下来
    
#3、preview就是网页源代码
    最主要的部分,包含了请求资源的内容
    如网页html,图片
    二进制数据等
 
爬虫所需工具:
    请求库:requests,selenium
    解析库:正则,beautifulsoup,pyquery
    存储库:文件,MySQL,Mongodb,Redis
 
requests模块
requests模块可以模拟浏览器的请求,比起urllib,requests模块的api更加便捷,本质就是封装了urllib3。
 
 
#注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求
 
#各种请求方式:常用的就是requests.get()和requests.post()
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})
>>> r = requests.put('http://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('http://httpbin.org/delete')
>>> r = requests.head('http://httpbin.org/get')
>>> r = requests.options('http://httpbin.org/get')

 
未完待续
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/ArmoredTitan/p/7795349.html