爬虫知识点总结

您所在的位置:网站首页 爬虫入门需要学哪些知识 爬虫知识点总结

爬虫知识点总结

#爬虫知识点总结| 来源: 网络整理| 查看: 265

爬虫总结

一、

1.什么是爬虫?

爬虫就是:模拟浏览器发送请求,获取响应

2.爬虫的分类,爬虫的流程

聚焦爬虫:针对特定的网站的爬虫 准备url地址 -->发送请求 获取响应–> 提取数据–> 保存 获取响应–> 提取url地址,继续请求 通用爬虫:搜索引擎的爬虫 抓取网页–> 数据存储–>预处理–> 提供检索服务,网站排名

3.浏览器发送请求的过程

爬虫请求的:url地址对应的响应 浏览器获取到的内容:elements的内容=url对应的响应+js+css+图片 爬虫获取的内容和elements内容不一样,进行数据提取的时候,需要根据url地址对应的响应为准进行数据的提取

4.http的请求头user-agent有什么用

user-agent:告诉对方服务器是什么客户端正在请求资源,爬虫中模拟浏览器非常重要的一个手段 爬虫中通过把user-agent设置为浏览器的user-agent,能够达到模拟浏览器的效果 cookie:获取登录只有才能够访问的资源

5.利用requests模板如何发送请求和获取响应

response = requests.get(url) response.text -> str # 根据响应信息进行有规律的推测网页的编码 response.encoding=“utf-8” response.encoding=”gbk” response.content -> bytes response.content.decode(“utf8”) # 发送请求,获取响应 def parse(self, url, data): response = requests.get(url,params=params,headers=self.headers) response = requests.post(url,data=data, headers=self.headers) return response.content.decode() response.status_code response.request.headers response.headers 一般来说名词,往往都是对象的属性,对应的动词是对象的方法 获取网页源码的通用方式: response.content.decode() 的方式获取响应的html页面 response.content.decode(“GBK”) response.text

6.python2和python3中的字符串

ascii 一个字节表示一个字符 unicode 两个字节表示一个字符 utf-8 边长的编码方式,1,2,3字节表示一个字符

python2 字节类型:str,字节类型,通过decode()转化为unicode类型 unicode类型:unicode ,通过encode转化为str字节类型 python3 str:字符串类型,通过encode() 转化为bytes bytes:字节类型,通过decode()转化为str类型

7.常见的状态响应码

200:成功 302:临时转移至新的url 307:临时转移至新的url 404:not found 500:服务器内部错误

二、

1.requests中headers如何使用,如何发送带headers的请求

模拟浏览器,欺骗服务器,获取和浏览器一致的内容 headers = {“User-Agent”:“从浏览器中复制”} headers = { “Origin”: “http://ntlias-stu.boxuegu.com”, “Referer”: “http://ntlias-stu.boxuegu.com/”, “User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.17 Safari/537.36” } requests.get(url,headers=headers)

2.发送带参数的请求

params = {"":""} url_temp = “不完整的URL地址” requests.get(url_temp,params=params)

3.requests如何发送post请求

data = {“从浏览器中form data的位置寻找”} requests.post(url,data=data)

4.requests中如何使用代理,使用代理的目的,代理的分类

proxies = {“https”: “https://117.127.0.195:8080”} proxies = {协议:协议+ip+端口} requests.get(url,proxies=proxies) 目的: 反反爬 隐藏真实ip

代理的分类

高匿名代理:不知道在使用代理 匿名代理:知道在使用代理,但是不知道真实ip 透明代理(Transparent Proxy):对方知道真实的ip

5.requests中session类如何使用,为什么要使用session

session = requests.Session() session.post(url,data) #cookie会保存在session中 session.get(url) #用session发送请求会带上之前的cookie 注意:这块的session类和之前所学的session无任何关系

6.列表推导式

In [41]: [i for i in range(10)] Out[41]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [42]: [i/2 for i in range(10)] Out[42]: [0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5] In [43]: [i/2 for i in range(10) if i%2==0]

三、

1.requests进行携带cookie登录

cookie字符串放在headers中 把cookie字典交给requests请求方法的cookies

2.寻找登录接口的方法

form表单action对应的url地址 用户名和密码的input标签中,name的值作为键,用户名和密码作为值的字典,作为post data 通过抓包,定位url地址 form data

3.分析js,获取加密的数据

观察变化 定位js 通过event listener定位js的位置 通过搜索url地址中的关键字,通过chrome的search all file来进行搜索 进行分析 通过添加断点的方式分析js 执行js 完全的使用python模拟js的执行过程

4.requests处理ssl证书

requests.get(url,verify=False)

5.获取响应中的cookie,转化为字典

response = requests.get(url,headers=headers) requests.utils.dict_from_cookiejar(response.cookies)

6.requests中超时参数的使用,retrying模块的使用

from retrying import retry requests.get(url,timeout=3) 通过装饰器的方式使用retry,进行异常捕获,重新执行被装饰的函数 from retrying import retry @retry(stop_max_attempt_number=3) def fun(): pass

7.数据的分类

结构化数据 json, xml 直接使用模块转化为python类型 非结构化数据 html re,xpath

8.json模块的使用

数据交换格式 json.loads(json_str) json字符串转化为python类型 json.dumps(python_type,ensure_ascii=False,indent=2) python类型转化为json字符串 json.load() 把包含json的类文件对象中的数据提取出来转化为python类型 json.dump() python类型存入类文件对象中 那么对于为什么需要模拟登陆? 获取cookie,能够爬取登陆后的页面

9.requests模拟登陆的三种方法

session 实例化对象 session.get(url) #cookie保存在session中 session.get(url) #带上保存在session中cookie cookie方法headers中 cookie传递给cookies参数 cookie = {“cookie 的name的值”:“cookie 的value对应的值”}

10.三元运算符

a = 10 if 3


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3