Python网络通信-python爬虫基础

Python网络通信

1、requests模块的使用

1.1、安装requests模块

python">pip install requests

打开pycharm

在这里插入图片描述

在这里插入图片描述

安装成功会提示successfully

在这里插入图片描述

1.2、发送GET请求

  • 简单请求(以京东举例)
    python"># coding=utf-8
    import requests
    
    url = "http://www.jd.com"
    # 直接请求
    res = requests.get(url)
    # 获取响应体的内容
    data = res.text
    # 把结果打印出来(结合文件读取就可以爬取网页内容)
    print(data)
    

    运行结果

    在这里插入图片描述

  • 添加请求头(以百度举例)

    为什么要添加请求头呢,因为有些网页在你请求的时候会检查你是否有请求头,如果没有请求头,就不会返回正常的内容,下面我来验证

    创建两个python文件test01,test02

    在这里插入图片描述

    python"># test01 内容如下
    # coding=utf-8
    import requests
    
    url = "http://www.baidu.com"
    
    # 直接请求
    res = requests.get(url)
    # 获取响应体的内容
    data = res.text
    print(data)
    
    

    test01运行结果

    在这里插入图片描述

    test02

    python"># test02 内容如下
    # coding=utf-8
    import requests
    
    url = "http://www.baidu.com"
    
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    }
    # 直接请求
    res = requests.get(url, headers=header)
    # 获取响应体的内容
    data = res.text
    print(data)
    

    test02运行结果

    在这里插入图片描述

    1.2.1请求头的获取
  • 添加请求参数
    python"># coding=utf-8
    import requests
    
    url = "http://www.baidu.com"
    
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    }
    # 直接请求
    res = requests.get(url=url, params=params, headers=header)  # 直接在这里添加上面的定义的参数即可 
    # 获取响应体的内容
    data = res.text
    print(data)
    
  • 响应字符编码设置
    python"># coding=utf-8
    import requests
    
    url = "http://www.baidu.com"
    # 请求头
    header = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    # 直接请求
    res = requests.get(url=url, params=params, headers=header)
    # 获取响应体的内容
    data = res.text
    print(data)
    # 如果乱码,可以设置响应数据的编码
    print(res.content.decode("utf-8"))
    
  • 查看请求URL,响应编码,状态码
    python"># coding=utf-8
    import requests
    
    url = "http://www.gxaedu.com"
    # 请求头
    header = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    # 请求参数
    params = {
        'id': 10
    }
    # 直接请求
    res = requests.get(url=url, params=params, headers=header)
    # 查看完整的请求URL
    print(res.url)
    # 查看响应头编码
    print(res.encoding)
    # 查看响应状态码
    print(res.status_code)
    
  • 获取响应的cookie

    有些网页要登录之后才能看到内容,所以要先注册一个账户,登录之后拿到自己的cookie去进行下一步操作

    python"># coding=utf-8
    import requests
    
    url = "http://www.baidu.com"
    # 请求头
    header = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    # 请求参数(网页有参数采用参数,视具体情况来的)
    params = {
        'id': 10
    }
    # 直接请求
    res = requests.get(url=url, params=params, headers=header)
    # 查看完整的请求URL
    print(res.url)
    # 查看响应头编码
    print(res.encoding)
    # 查看响应状态码
    print(res.status_code)
    # 获取响应cookie
    cookie_data = list(res.cookies)
    # 遍历获取cookie值
    for cookie in cookie_data:
        print(cookie.value)
    

1.3、发送POST请求

和get一致,只是方法名字变成了post

python"># coding=utf-8
import requests

url = "http://www.baidu.com"
# 请求头
header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 请求参数
data = {
    'wd': 'python'
}
# 直接请求
res = requests.post(url=url, headers=header, data=data)
# 查看完整的请求URL
print(res.url)
# 查看响应头编码
print(res.encoding)
# 查看响应状态码
print(res.status_code)
# 获取响应数据
print(res.content.decode("utf-8"))

在这里插入图片描述

1.4、挂代理(这个要自行学习科学上网,才能操作)

请求时,先将请求发给代理服务器,代理服务器请求目标服务器,然后目标服务器将数据传给代理服务器,代理服务器再将数据给爬虫

直接请求:

python"># coding=utf-8
import requests

# 测试回显IP的地址
url = "http://httpbin.org/ip"  # 这个网址可以返回自己的ip
# 请求头
header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 直接请求
res = requests.get(url=url, headers=header)

print(res.text)

结果:显示的是自己的IP

python">{
  "origin": "xxx.xxx.xx.x"
}

利用代理请求:

python"># coding=utf-8
import requests

# 测试回显IP的地址
url = "http://httpbin.org/ip"
# 请求头
header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 使用代理
proxy = {
    # 准备的代理地址
    'http': 'http://xxx.xxx.xxx.xxx:端口号',
    'https': 'http://xxx.xxx.xxx.xxx:端口号'
}
# 直接请求
res = requests.get(url=url, proxies=proxy, headers=header)

print(res.text)

1.5、简单爬虫实战

后续就可以进行简单的爬虫了,这个我会持续更新的


http://www.niftyadmin.cn/n/5340087.html

相关文章

Halcon基于相关性的模板匹配create_ncc_model

Halcon基于相关性的模板匹配 基于相关性的模板匹配也是一种基于灰度特征的匹配方法。该方法使用一种基于行向量的归一化互相关匹配法,在检测图像中匹配模板图像。与基于灰度值的匹配相比,该方法速度快得多,并且能够适应线性光照变化。与基于…

C 练习实例37 - 排序

题目:对10个数进行排序。 从小到大排序题目分析: 1 6 3 4 8 9 0 2 5 7(假设10个数据) 第一个和第二个比,把大的那个数放在右边 第二个和第三个比,把大的那个数放在右边 以此类推...... 从而把最大的那…

【设计模式-07】Composite组合模式

简要说明 一、代码实现 定义抽象节点类 Node ,定义抽象方法 public abstract void print();定义叶子节点类 LeafNode ,继承Node节点,实现 print()抽象方法,叶子节点没有子节点定义子节点类BranchNode,继承Node节点&…

考试查分场景重保背后,我们如何进行可用性测试

作者:暮角 随着通过互联网音视频与知识建立连接的新学习方式在全国范围内迅速普及,在线教育/认证考试的用户规模呈井喷式增长。但教育容不得半点马虎与妥协,伴随用户规模不断增长,保证系统稳定性、有效避免千万考生考试时遭遇故障…

MySQL安装及加固(ZIP压缩包)-windows

MySQL安装及加固(ZIP压缩包)-windows 下载 在MySQL官网下载安装:MySQL :: Download MySQL Community Server 安装 将压缩包解压到指定目录下。 在解压后的MySQL目录下,创建配置文件my.ini [mysql] # 设置mysql客户端默认字符集…

数学建模学习笔记||层次分析法

评价类问题 解决评价类问题首先需要想到一下三个问题 我们评价的目标是什么我们为了达到这个目标有哪几种可行方案评价的准则或者说指标是什么 对于以上三个问题,我们可以根据题目中的背景材料,常识以及网上收集到的参考资料进行结合,从而筛…

XHCMS靶场小记(熊海)

文件包含漏洞 通过url判断文件包含漏洞(参数直接引入文件) 发现文件包含漏洞可以先尝试php伪协议进行命令执行(php://input或者data://text/plain); 发现allow_url_include参数应该没开启;那么寻找文件上传点上传图…

Linux与windows互相传输文件之rzsz命令

文章目录 关于rzsz安装软件使用命令方法一:直接拖拽方法二:直接在终端输入rz 关于rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件 安装完毕之后可以通过拖拽的方式将文件上传过去 首先看一下我们的机器可以使用网络吗&#xff…