爬虫(learing)

1、分类:

2、 流程:

 3、http/https协议

http协议:超文本传输协议,默认端口为80,明文传输;

https协议:http+ssl(安全套接字层),对传输内容加密,默认端口为443;

爬虫主要关注的请求头与响应头:

1)Content-type:内容类型(document文本内容、png图像文件)

2)host:域名

3)connection:连接类型,keep-alive(长连接)

4)Upgrade-Insecure-Requests:升级为https请求(307重定向)

5)User-Agent:用户代理(系统信息以及浏览器信息)

6)Referer:页面跳转处(用于检验是否为爬虫访问,防盗链(图片/视频))

7)Cookie:状态保持,有时效性

响应头:set-cookie:服务器设置cookie到用户浏览器的缓存

4、响应状态码:200(成功)、302(跳转,新的url在响应的location中)、303(post重定向)、307(get重定向)、403(资源不可用,拒绝访问)、404(找不到页面)、500(服务器内部错误)、503(服务器受访问过多,负载过高,无法响应),

network抓包不要看element返回的源码,要看具体文件的response源码!!!

5、Requests模块 —— get() 

Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档

1)发送请求:url->requests.get(url)-> .text

2)响应对象:手动修改编码格式:response.encoding='utf8';

3)两种返回对象区别:response.text:str;  response.content:bytes; response.content.decode()码,里面可以传'utf-8','GBK','iso-8859-1'等等编码字符集

4)常见响应对象属性:

url = "www.baidu.com"
response = requests.get(url)

response.encoding = 'utf8' ##手动设定编码格式

print(response.url)  ##响应url

print(response.status_code)  ##状态码

print(response.request.headers)  ##响应对应的请求头

print(response.headers) ##响应头

print(response.cookies)  ##响应的cookies

print(response.json()) ##自动将json字符串类型的响应内容转换成python对象

5)请求头:

import requests
url = "http://www.baidu.com"
response = requests.get(url)
print(len(response.text))
print(response.content.decode())

#请求头
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}
response1 = requests.get(url,headers=header)
print(len(response1.text))

6)发送带参数的请求,第一种是直接url直接加上参数;

url = "https://www.baidu.com/s?wd=python"

第二种是构造参数字典,get()传入

data = {'wd':'python'}
url = "https://www.baidu.com"
response = request.get(url,params=data)

7)发送带有cookie参数,模拟保持登录

参数字典header:

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
'Cookie':'BIDUPSID=B3C094FD6A0FEE417C2703340B4AF2DTM=1603963404BDUSS=RvbTFia3BaLUJzcVJhSXJLS1ozWjIzeHJXb0N1YjlYQnVWcEd6LTZ3VmRrZDlmSVFBQUFBJCQAAAAAAAAAAAEAAAB9t594uKG7qrS10akAAAAAAAAAAAAAAAAAAAAAA' 
}  ##随便复制了一些

url = "https://www.baidu.com"
response = requests.get(url,headers=headers)

 更优雅的写法,将cookie写成字典:

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}  

cookies='BIDUPSID=B3C094FD6A0FEE417C2703340B4AF2DTM=1603963404BDUSS=RvbTFia3BaLUJzcVJhSXJLS1ozWjIzeHJXb0N1YjlYQnVWcEd6LTZ3VmRrZDlmSVFBQUFBJCQAAAAAAAAAAAEAAAB9t594uKG7qrS10akAAAAAAAAAAAAAAAAAAAAAA'

cookies_dict = {cookie.split('=')[0]:cookie.split('=')[1] for cookie in cookies.split(';')}

url = "https://www.baidu.com"
response = requests.get(url,headers=headers,cookies=cookies_dict)

8)超时参数timeout,表示当超过这个时间,则访问取消(强制停止,节省时间)

response = requests.get(url,timeout=3)  ##超时为3s

9)代理使用:代理ip是一个ip,指向一个代理服务器,负责帮助用户端向服务端转发请求

正向代理:浏览器知道最终处理请求服务器的真实ip地址,比如vpn

反向代理:浏览器不知道最终服务器真实ip地址,为服务端进行负载均衡,为最终处理请求的服务器转发请求,比如nginx

代理ip分类(根据透明度进行分类):

透明代理:目标服务器能够查找到客户端ip地址,目标服务器收到的请求头如下:

REMOTE_ADDR = Proxy IP

HTTP_VIA = Proxy IP

HTTP_X_FORWARDED_FOR = Your IP

匿名代理:服务器能感知到是通过代理进行转发,但是不知道客户端ip地址:

REMOTE_ADDR = Proxy IP

HTTP_VIA = Proxy IP

HTTP_X_FORWARDED_FOR = Proxy IP

高级代理:服务器无法确定转发请求是否为代理(一般使用高级代理最好):

REMOTE_ADDR = Proxy IP

HTTP_VIA = not determined

HTTP_X_FORWARDED_FOR = not determined

proxies = {
    'http': 'http://12.34.56.79:9527',
    'https':'https://12.34.56.79:9527'
}

response = requests.get(url,proxies=proxies)

协议有三种,http、https(主要用这两种)以及socks

免费代理ip:国内高匿免费HTTP代理IP - 快代理(但是容易出现很多ip代理已经挂掉)

10)使用verify参数忽略CA证书(因为存在CA证书过期/不合法的网站,一般人工访问会出现信任安全的弹框界面)

response = requests.get(url,verify=False)  ##忽略CA证书认证

6、Request模块 —— post()

模拟金山词霸爬虫案例:百度翻译post爬虫案例_m0_59091819的博客-CSDN博客

7、session:相比与cookie,自动保持cookie,保持状态(场景:连续登陆,比如登陆之后再分其他页面

session = requests.session() #创建实例化
response = session.get(url,headers,...)
response = session.post(url,headers,...)

模拟登录github案例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习是一种机器学习的方法,它模仿人脑的神经网络结构,通过构建多层次的神经网络来进行学习和训练。吴恩达是深度学习领域的权威学者之一,他在这一领域有着丰富的经验和独到的见解。 吴恩达在深度学习的研究和应用方面做出了许多重要的贡献。他在斯坦福大学开设的在线课程《机器学习》和《深度学习》受到了全球范围内的广泛关注和认可,并为很多人了解和学习深度学习提供了便利。 吴恩达还与其他学者联合创办了多家深度学习相关的公司,推动了深度学习技术在各个领域的应用,包括计算机视觉、语音识别、自然语言处理等。他的研究和工作使得深度学习在人工智能领域取得了巨大的突破和进展,为实现人工智能的更高水平做出了重要贡献。 在CSDN上,可以找到吴恩达的许多深度学习相关的文章和视频,这为广大的技术爱好者和从业者提供了学习和交流的平台。CSDN作为一个技术社区,致力于分享和传播深度学习的最新研究成果和应用案例,为技术人员提供了宝贵的资源和经验。 综上所述,吴恩达在深度学习领域的成就和贡献不可忽视。他通过教育、研究和创业等方式,在推动深度学习的发展和应用方面发挥着重要的作用。而CSDN作为一个技术社区,为吴恩达这样的专家学者提供了一个分享和交流的平台,为广大的技术爱好者和从业者提供了宝贵的学习资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值