python爬虫5:requests库-案例3
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参数值,结果如下:
可以发现的是,参数构建如下:
data = {'action' : 'user_login','username' : 账号,'password' : 密码,'rememberme' : 1
}
2.3 真实url确定
在上一讲由于没能实际运行代码,所以忘记讲述这一点了。
就是我们登录页面的url有时候并不是我们在网页上看到的url,比如这个案例中,我在网页上看到的登录网址为:
xxxxxx_login.html
但是,实际上,我通过上面的POST页面,发现真实的网址其实是一个名为xxxxx.php
页面,所以大家一定要以抓取的POST页面信息为准,才可以快准狠地登录成功。
2.4 代码
有了上面的思路,代码就很简单了:
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
下一篇,开始讲解解析库的内容。
相关文章:

python爬虫5:requests库-案例3
python爬虫5:requests库-案例3 前言 python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 本系列所涉及的代码仅用于个人研究与讨论,并不会对网…...

uni-app:实现点击按钮,进行数据累加展示(解决数据过多,导致出错)
效果 代码 核心代码 一、标签显示 <!-- 加载更多 --> <view class"load_more" v-if"info.length > pageNum * pageSize" tap"loadMore">加载更多 </view> v-if"info.length > pageNum * pageSize"…...

群晖6.X便捷的安装cpolar内网穿透
群晖6.X便捷的安装cpolar内网穿透 文章目录 群晖6.X便捷的安装cpolar内网穿透前言1. 下载cpolar的群晖套件1.1 打开群晖套件中心1.2 选择“手动安装”1.3 选择下载cpolar套件位置 2. 打开cpolar的Web-UI界面3. 注册会员 前言 随着硬件设备和软件技术的发展,以及数据…...

ffmpeg 4.4版本对MP4文件进行AES-CTR加密,和流式加密
对于ffmpeg的AES-CTR加密有两种方式,一个是普通的整个视频做加密,另一个是对视频做切片处理,然后进行加密。 一、对于普通的加密方式 直接使用下面的命令就行 ffmpeg -i animal.mp4 -vcodec copy -acodec copy -encryption_scheme cenc-aes…...

软件测试基础篇——Docker
1、docker技术概述 docker描述:docker是一项虚拟化的容器技术(类似于虚拟机),docker技术给使用者提供一个平台,在该平台上可以利用提供的容器,对每一个应用程序进行单独的封装隔离,每一个应用程…...

MySQL刷题遇到的盲点(五)窗口函数
窗口函数 语法: <窗口函数> over (partition by <用于分组的列名>order by <用于排序的列名>) partition by:用来对表分组( partition 子句可以省略,省略就是不指定分组) order by:是…...

【java】基础——多态
多态基本知识思维导图 多态的代码实现,注意父类对象引用指向子类对象引用(向上转型)的方法,父类就可以调用子类重写的方法和派生的方法,但不能调用子类特有的方法: class Animal {public void makeSound()…...
Go语言使用cron/v3实现定时任务
一、获取cron/v3包 go get github.com/robfig/cron/v3v3.0.0安装v3版本的cron包。 二、创建cron调度器 使用cron.New()创建一个新的Cron调度器: c : cron.New()三、添加定时任务 使用AddFunc方法添加定时任务,参数是cron表达式和任务函数: c.AddFunc("* * * * *&quo…...

photoshop PS 查看像素坐标、像素颜色、像素HSB颜色
方法一 photoshop 菜单栏 窗口菜单->信息菜单项(F8), 在信息窗口里会有当前的 x,y坐标 方法二 photoshop 菜单栏 视图菜单->标尺菜单项(ctrlR) 宽度和高度边上都有标尺,默认的是厘米,右键单机宽度和高度边上…...

SpringCloud实用篇3----Docker
1.初识Docker 1.1 什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致…...

使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统
阿里云百科分享使用阿里云服务器建站教程,本文是搭建Discuz论坛,Discuz!是一款通用的社区论坛软件系统,它采用PHP和MySQL组合的基础架构,为您提供高效的论坛解决方案。本文介绍如何在CentOS 7操作系统的ECS实例上搭建Discuz! X3.4…...

gitee(码云)如何生成并添加公钥配置用户信息
一,简介 在使用Gitee的时候,公钥是必须的,无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器,然后配置自己的用户信息,方便日后拉取与上传代码。 二,步骤介绍 2.1 本地生成公钥 打开git ba…...

C++QT教程3——手册4.11.1自带教程(笔记)——创建一个QT快速应用
文章目录 创建一个QT快速应用创建项目创建主视图添加应用逻辑为视图添加动画素材文件 参考文章 创建一个QT快速应用 本教程使用内置的QML类型,介绍了Qt Quick的基本概念。有关可以选择的用户界面选项的更多信息,请参阅用户界面。 本教程描述了如何使用…...

用友时空KSOA SQL注入漏洞复现(HW0day)
0x01 产品简介 用友时空KSOA是建立在SOA理念指导下研发的新一代产品,是根据流通企业最前沿的I需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的IT系统之间彼此轻松对话,帮助流通企业保护原有的IT投资,简化IT管理&#…...
java中编写代码:如何以sftp的形式把文件从服务器上面下载下来?(有账号和密码)
在Java中,你可以使用JSch库来实现通过SFTP协议下载文件。以下是一个简单的示例代码: import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class SFTPDownloa…...

【24择校指南】南京大学计算机考研考情分析
南京大学(A) 考研难度(☆☆☆☆☆) 内容:23考情概况(拟录取和复试分数人数统计)、院校概况、23初试科目、23复试详情、参考书目、各科目考情分析、各专业考情分析。 正文2178字,预计阅读:6分…...

IL汇编 ldarg 指令学习
IL汇编代码, .assembly extern mscorlib {} .assembly MathLib {.ver 1 : 0 : 1 : 0 }.module MathLib.dll.namespace MyMath { .class public ansi auto MathClass extends [mscorlib]System.Object{ .method public int32 GetSquare(int32) c…...

【ARM Cache 系列文章 9 番外篇 -- ARMv9 系列 Core 介绍】
文章目录 ARMv9 系列CoreARM Cortex-A510 介绍ARM Cortex-A715ARM Cortex-A720 ARMv9 系列Core 2021年5月Arm公布了其最新3款CPU和3款GPU核心设计,三款新CPU分别是旗舰核心Cortex-X2、高性能核心Cortex-A710、高能效核心Cortex-A510 CPU,三款新GPU核心则…...

章节7:Burp Intruder模块
章节7:Burp Intruder模块 参考资料 https://portswigger.net/burp/documentation/desktop/tools/intruder 01 Intruder模块作用与原理 原理 http://xxx.xx.com/bbs/index.php?namewuyanzu&mottogo 对请求参数进行修改,分析响应内容࿰…...
vue pc端项目el-upload上传图片时加水印
html代码: <a-uploadclass"avatar-uploader"list-type"picture-card":file-list"uploadFileList":custom-request"uploadDoneHandle":before-upload"beforeUpload":remove"removeHandle"v-decorat…...
The Quantization Model of Neural Scaling
文章目录 摘要1引言2 理论3 概念验证:一个玩具数据集3.1 “多任务稀疏奇偶校验”数据集3.2 幂律规模和新兴能力 4 拆解大型语言模型的规模定律4.1 单token损失的分布4.2 单基因(monogenic)与多基因(polygenic)的规模曲…...

自动驾驶科普(百度Apollo)学习笔记
1. 写在前面 在过去的几年里,自动驾驶技术取得飞速发展,人类社会正逐渐走向一个新时代,这个时代中,汽车不仅仅是一个交通工具,更是一个智能的、能够感知环境、做出决策并自主导航的机器伙伴。现在正好也从事这块的工作…...
day50 随机函数与广播机制
目录 一、随机张量的生成 1.1 torch.randn() 函数 1.2 其他随机函数 1.3 输出维度测试 二、广播机制 2.1 广播机制的规则 2.2 加法的广播机制 二维张量与一维向量相加 三维张量与二维张量相加 二维张量与标量相加 高维张量与低维张量相加 2.3 乘法的广播机制 批量…...

idea 启动jar程序并调试
添加一个JAR 应用程序,填写以下内容: JAR路径:填写你要启动的jar程序的绝对路径 虚拟机选项:-Xmx1G -Xms1G -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 程序实参(可选,minecraft专用…...
OpenJudge | 大整数乘法
总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的积。 输入 有两行,每行是一个不超过200位的非负整数,没有多余的前导0。 输出 一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342&am…...

解决pycharm同一个文件夹下from *** import***仍显示No module named
1、,from ***import *,同文件夹中已有.py文件但是仍然报错No module named 原因是因为pycharm没有把文件夹设置为根目录,只需要在文件夹的上一级设置为根目录即可,测试过如果仅仅将当前的文件夹设置仍然报错,如果把最上…...
JAVA 对象 详解
对象 对象结构: 对象头(元数据和指向class的指针)、实例数据、对齐填充 数组对象: 对象头(元数据和指向class的指针)、数组长度、数组数据、对齐填充 对象创建: 一、当Java虚拟机遇到一条…...
MyBatis中foreach集合用法详解
在 MyBatis 中,<foreach> 标签用于遍历集合(Collection、List、Array、Map),常用于构建动态 SQL 语句(如 IN 查询、批量插入等)。以下是详细用法和示例: 核心属性 属性描述collection必填…...

编程基础:执行流
能帮到你的话,就给个赞吧 😘 文章目录 执行流同步:顺序执行,只有一个执行流异步:新开后台(次)执行流,后台执行流要确保不能影响主执行流。共有两个执行流。 阻塞:任务阻塞执行流,导致…...

Mysql 插入中文乱码
session范围 查看数据库编码: show variables like %char%; # MySQL 5.7 字符集强制配置 # 修复 character_set_databaselatin1 等问题 [mysqld] character-set-server utf8mb4 collation-server utf8mb4_unicode_ci init_connect SET NAMES utf8mb4[client] d…...