爬虫总结

爬虫总结

day01
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:服务器内部错误

day02
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.列表推导式

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

day03
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<2 else 100

11.字典推导式

In [8]: {i:i+10 for i in range(10)}
Out[8]: {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19}
In [9]: {i:i+10 for i in range(10) if i%2==0}
Out[9]: {0: 10, 2: 12, 4: 14, 6: 16, 8: 18}
day04
1.正则的语法

字符
. 能够匹配\n之外的所有字符 re.S模式下可以匹配\n
\ 转义
[] 或的效果,从中选择一个, [abc]+ 能够匹配多个
| 或的效果
预定义的字符集
\d 数字
\s 空白字符串,包含空格、\n,\t
\w 单词字符,a-zA-Z0-9_
数量词
匹配0次或者多次
能够匹配1次或者多次
? 能够匹配0-1次,让*,+非贪婪

2.re模块的常用方法
re.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值