python爬虫5:requests库-案例3

news/2024/7/19 12:36:34 标签: python, 爬虫, 开发语言

python5requests3_0">python爬虫5:requests库-案例3

前言

python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。

申明

​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好影响。

目录结构

文章目录

    • python爬虫5:requests库-案例3
      • 1. 目标
      • 2. 详细流程
        • 2.1 代理池的构建
        • 2.2 目标确定
        • 2.3 真实url确定
        • 2.4 代码
      • 3. 总结

1. 目标

​ 本次案例的主要目标是帮助大家熟悉requests库中的会话维持技巧、代理构建等技巧。

再次说明,案例本身并不重要,重要的是如何去使用和分析,另外为了避免侵权之类的问题,我不会放涉及到网站的图片,希望能理解

2. 详细流程

2.1 代理池的构建

​ 代理池的作用之前已经讲过了,但是如何构建代理池呢?一般来说都是将那些可以使用的代理IP放入数据库中,后面写爬虫程序的时候再调用,因为代理池是可以一直使用的工具。

​ 我之前写过一个脚本,就是利用一个爬虫专门去爬免费代理网站的代理IP,然后再写个爬虫去爬取目标网站。不过这里,我们就简单来,把一些可用的代理IP放入一个字典中即可

2.2 目标确定

​ 这次我换了一个小网站,具体地址我就不放了。

​ 首先,利用上一篇的知识,虚假登录获取data参数值,结果如下:

在这里插入图片描述

​ 可以发现的是,参数构建如下:

python">data = {
	'action' : 'user_login',
	'username' : 账号,
	'password' : 密码,
	'rememberme' : 1
}

2.3 真实url确定

​ 在上一讲由于没能实际运行代码,所以忘记讲述这一点了。

就是我们登录页面的url有时候并不是我们在网页上看到的url,比如这个案例中,我在网页上看到的登录网址为:

xxxxxx_login.html

​ 但是,实际上,我通过上面的POST页面,发现真实的网址其实是一个名为xxxxx.php页面,所以大家一定要以抓取的POST页面信息为准,才可以快准狠地登录成功。

2.4 代码

​ 有了上面的思路,代码就很简单了:

python">import requests
import time
# 网址
login_url = '真实登录网址'
home_url = '个人用户页面网址'
# 参数
username = input('请输入账号:')
password = input('请输入密码:')
data = {
    'action': 'user_login',
    'username': username,
    'password': password,
    'rememberme': '1'
}
# header参数
headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}
# 代理池
proxies = {
    'http' :'http://ip:端口',
    xxxxx
}
# 请求
session = requests.session()
# 登录
session.post(login_url,headers=headers,data=data,proxies=proxies)
time.sleep(6)
# 访问个人主页
response = session.get(home_url,headers=headers)
# 查看结果
print(response.status_code)
# 把个人用户界面网页拷贝下来证明登录成功
with open('home.html','w',encoding='utf-8') as f:
    f.write(response.content.decode('utf-8'))

​ 这里又补充一个知识点,就是你可以把网页源码保存到本地,以html后缀格式存储,然后可以用浏览器打开,这样可以直观看到爬取的结果

​ 此时,我这里的结果如下:

在这里插入图片描述

3. 总结

​ 到这篇文章为止,requests库就讲解完毕了,这里我简单总结一下写请求代码时最需要注意的点:

  • headers参数不能忘记,现在网站最基本的都会排查headers参数
  • 写登录爬虫时,一定要去通过浏览器提供的后台工具,结合我上篇和这篇的知识点,去抓取真实提交的POST页面,找到参数和真实url

​ 下一篇,开始讲解解析库的内容。


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

相关文章

FLatten Transformer 简化版Transformer

今天在找论文时,看到一篇比较新奇的论文,在这里跟大家分享一下,希望可以给一些人提供一些思路。虽然现在Transformer 比较火,在分割上面也应用的比较多,但是我一直不喜欢用,其中一个原因是结构太复杂了&…

C++笔记之字节数组的处理

C笔记之字节数组的处理 code review! 文章目录 C笔记之字节数组的处理1.字节数组打印2.将字节数组转换为十六进制字符串并打印3.将字符串转为字节数组4.将字节数组转为字符串5.字节数组和字符数组的区别6.字节数组用于二进制数据存储7.字节数组用于网络通信数据传输8.使用 un…

【分布式系统】聊聊高性能设计

每个程序员都应该知道的数字 高性能 对于以上的数字,其实每个程序员都应该了解,因为只有了解这些基本的数字,才能知道对于CPU、内存、磁盘、网络之间数据读写的时间。1000ms 1S。毫秒->微秒->纳秒-秒->分钟 为什么高性能如此重要的…

苹果账号被禁用怎么办?

苹果账号被禁用怎么办? 转载:苹果账号被禁用怎么办? 当我们使用苹果手机登录App Store时,有时会遇到账号被禁用的提示。总结下来, 账号被禁用的原因可能有以下几种: 禁用的原因 1.在不同的设备上登录Ap…

阿里云对象存储服务OSS

1、引依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version> </dependency> <dependency><groupId>javax.xml.bind</groupId><artifa…

安装使用IDEA,修改样式,配置服务,构建Maven项目(超级详细版)

目录 前言&#xff1a; 一&#xff0c;安装 1.1打开官网JetBrains: Essential tools for software developers and teams点击 Developer Tools&#xff0c;再点击 Intellij IDEA 2.点击下载​编辑 3.选择对应的版本&#xff0c;左边的 Ultimate 版本为旗舰版&#xff0c;需要…

UEFI介绍(从提出背景到整体架构清晰明了)

UEFI(统一可扩展固件接口)取代传统BIOS(基本输入输出系统) 取代的原因&#xff1a; BIOS开发效率低(汇编语言&#xff0c;代码与硬件的耦合程度高)&#xff0c;性能差(不支持异步工作模式)&#xff0c;可扩展性差(静态链接)&#xff0c;安全性差并且不能对于2TB以上的硬盘进行…

PyTorch翻译官网教程-FAST TRANSFORMER INFERENCE WITH BETTER TRANSFORMER

官网链接 Fast Transformer Inference with Better Transformer — PyTorch Tutorials 2.0.1cu117 documentation 使用 BETTER TRANSFORMER 快速的推理TRANSFORMER 本教程介绍了作为PyTorch 1.12版本的一部分的Better Transformer (BT)。在本教程中&#xff0c;我们将展示如…