C#登录后携带cookie爬取数据
前一段时间,公司以前的一个数据采集任务突然之间采集下来的数据都是0了,也就是未登录状态能够获取到的数据,于是猜想肯定是网站的服务升级了,升级了数据接口的逻辑,于是便开始解决此问题。
此采集程序是由.net core开发,采用Quartz定时任务定时采集数据。
下面是解决方法:
1.首先从登录url拿到cookie,然后保存至内存中
2.打开需要爬取的网页时,将拿到的cookie放到打开网页的request中
3.在第2步中ContentType 和UserAgent 需要与登录获取cookie一致
/// <summary>/// 获取Cookie/// </summary>/// <param name="url">登录url,例如http://www.website.com/user/doLogin</param>/// <param name="params">登录参数,例如username=username&pwd=pwd&forever=1</param>/// <returns></returns>public static CookieCollection GetCookieCollection(string url, string params){CookieContainer cc = new CookieContainer();ASCIIEncoding encoding = new ASCIIEncoding();byte[] data = encoding.GetBytes(params);HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";request.ContentLength = data.Length;request.UserAgent = "Chrome/87.0.4280.66"; Stream newStream = request.GetRequestStream();newStream.Write(data, 0, data.Length);newStream.Close();request.CookieContainer = cc;HttpWebResponse response = (HttpWebResponse)request.GetResponse();CookieCollection cookieCollection = response.Cookies;DateTime dt = DateTime.Now.AddMinutes(365 * 24 * 60);//为cookie添加过期时间for (int i = 0; i < cookieCollection.Count; i++){cookieCollection[i].Expires = dt;}return cookieCollection;}/// <summary>/// 获取网页代码/// </summary>/// <param name="url">需要爬取的数据所在网页url</param>/// <param name="cookieCollection">GetCookieCollection方法获取到的cookie</param>/// <returns></returns>public static string GetWebContent(string url, CookieCollection cookieCollection) {CookieContainer cc = new CookieContainer();cc.Add(cookieCollection);HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.CookieContainer = cc;request.ContentType = "application/x-www-form-urlencoded";//与登录一致request.UserAgent = "Chrome/87.0.4280.66"; //与登录一致HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream stream = response.GetResponseStream();string webContent = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();return webContent;}相关文章:
C#登录后携带cookie爬取数据
前一段时间,公司以前的一个数据采集任务突然之间采集下来的数据都是0了,也就是未登录状态能够获取到的数据,于是猜想肯定是网站的服务升级了,升级了数据接口的逻辑,于是便开始解决此问题。 此采集程序是由.net core开…...
自动驾驶国家新一代人工智能开放创新平台产业化应用
【摘要】:当前,全球新一轮科技革命和产业变革正孕育兴起,自动驾驶作为人工智能最重要的应用载体之一,对于加快交通强国、智能汽车强国建设,具有十分突出的战略意义。我国自动驾驶研发应用,面临技术、资金、应用等诸多挑战,为此,需要打造一套符合我国国情的自动驾驶系统…...
Maven分模块-继承-聚合-私服的高级用法
Maven分模块-继承-聚合-私服的高级用法 JavaWeb知识,介绍Maven的高级用法!!! 文章目录 Maven分模块-继承-聚合-私服的高级用法1. 分模块设计与开发1.1 介绍1.2 实践1.2.1 分析1.2.2 实现 1.3 总结 2. 继承与聚合2.1 继承2.1.1 继承…...
Spring 是如何解决循环依赖问题的?
项目场景: 提示:这里简述项目相关背景: 例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大) 问题描述 我们都知道,如果在代码中,将两个…...
Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发
今日目标 掌握纯注解开发依赖注入(DI)模式 学习使用纯注解进行第三方Bean注入 1 注解开发依赖注入(DI)【重点】 问题导入 思考:如何使用注解方式将Bean对象注入到类中 1.1 使用Autowired注解开启自动装配模式(按类型) Service public class StudentS…...
java 强密码验证策略工具类
java 强密码验证策略工具类 package com.neusoft.caeid.common.utils;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** author dume*/ public class PasswordUtil {public static final String REGEX "^\\S*(?\\S{6,})(?\\S*\\d)(?\\S*[a-zA-Z…...
CI/CD—K8S 基本理解与部署
1 K8S 是什么 Kubernetes 是一款容器的编排调度工具,来源于 Google 开源的 Brog 系统。Kubernetes简称K8S,是用8代替8个字符 “ubernete” 而成的缩写,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化…...
2023网络安全常用工具汇总(附学习资料+工具安装包)
几十年来,攻击方、白帽和安全从业者的工具不断演进,成为网络安全长河中最具技术特色的灯塔,并在一定程度上左右着网络安全产业发展和演进的方向,成为不可或缺的关键要素之一。 话不多说,网络安全10款常用工具如下 1、…...
OpenStack监控工具
OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权。 OpenStack为私有云和公有云提供可扩展的弹性的云计算…...
讲解密码学综合应用
密码学综合应用是指将密码学的理论和技术应用于各种场景中,以保障信息的安全性、完整性和可靠性。密码学的应用范围非常广泛,包括通信安全、网络安全、电子商务、数字签名、认证、密钥管理等。下面将简要介绍一些密码学综合应用的实例: 1. 加…...
Flamingo
基于已有的图像模型和文本模型构建多模态模型。输入是图像、视频和文本,输出是文本。 Vision encoder来自预训练的NormalizerFree ResNet (NFNet),之后经过图文对比损失学习。图片经过图像模型的输出是2D grid,视频按1FPS的频率采样后经过图…...
Leetcode-每日一题【剑指 Offer 12. 矩阵中的路径】
题目 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,在下面的 34 的矩阵中包含单词 "ABCCED"(单词中的字母…...
安全渗透知识总结二
目录 一、html实体编码 1、Unicode字符编码 2、字符的数字表示 3、常见实体编码 4、url 协议 主机 http状态码 http常用的状态码 端口 常见协议端口 查询参数 锚点 url字符 urlcode字符 绝对url和相对url 二、字符编码 Ascll字符集 html字符集 html的url编码 …...
【线程】wait()+notifyAll()实现多个线程交替遍历,输出ABCABC
背景 有三个线程,每个线程分别循环输出A、B、C,各线程循环10次,要求输出结果是ABCABCABC这样的 代码 Data public class PrintThread extends Thread {private String string; // 输出的字符串private int order; …...
MyBatis 缓存机制复习及项目中的应用经历
背景 想起前两年工作中因为二级缓存默认开启导致的问题,完整的看了一个介绍 MyBatis 缓存机制的视频《MyBatis 缓存基础知识讲解》。 总计知识点: 缓存的类型及开关这是个形同虚设的功能,线上环境应该禁用缓存 MyBatis 缓存分类 MyBasit…...
匈牙利算法详解
匈牙利算法(Hungarian Algorithm)是一种组合优化算法(combinatorial optimization algorithm),用于求解指派问题(assignment problem),算法时间复杂度为O(N^3)。Harold Kuhn发表于1955年,由于该算法基于两位匈牙利数学家的早期研究成果&#…...
script的三种加载模式
默认加载:阻断dom树构建(html文档解析),下载资源,然后立即执行,完毕后再进行dom树构建defer 加载:下载照旧,但执行延后。即下载资源和dom构建同时进行,但等dom树构建完再执行async:下…...
mongo 中两张表联合查询
表1:user 表 表2:dept表 需要查询user表中roleCodes 包含shr 的数据 然后联合dept表 需要部门名称 db.user.aggregate([{$match: {roleCodes: "shr" // 匹配roleCodes包含"shr"的文档}},{$lookup: {from: "dept", // 关联的集合名称loc…...
【Linux】多路转接 -- epoll
文章目录 1. 认识epoll2. epoll相关系统调用接口3. epoll工作原理4. epoll服务器5. epoll的优点6. epoll的工作方式7. epoll的使用场景 1. 认识epoll epoll系统调用和select以及poll是一样的,都是可以让我们的程序同时监视多个文件描述符上的事件是否就绪。 epoll…...
学会RabbitMQ的延迟队列,提高消息处理效率
系列文章目录 手把手教你,本地RabbitMQ服务搭建(windows) 消息队列选型——为什么选择RabbitMQ RabbitMQ灵活运用,怎么理解五种消息模型 RabbitMQ 能保证消息可靠性吗 推或拉? RabbitMQ 消费模式该如何选择 死信是什么…...
Pixel Language Portal惊艳效果集:梵文古籍→现代汉语的逐层语义解构与重构展示
Pixel Language Portal惊艳效果集:梵文古籍→现代汉语的逐层语义解构与重构展示 1. 像素语言传送门核心能力 Pixel Language Portal(像素语言跨维传送门)是基于Tencent Hunyuan-MT-7B引擎构建的创新翻译工具。与传统翻译软件不同࿰…...
别再让YOLO的检测框丑哭你!手把手教你根据图片大小动态调整边框粗细(附Ultralytics源码修改)
让YOLO检测框颜值翻倍:基于图像尺寸的动态边框优化实战 在计算机视觉领域,YOLO系列算法因其出色的实时性和准确性,已成为目标检测任务的首选工具之一。然而,许多开发者在实际应用中发现,虽然模型的检测精度令人满意&am…...
【技术干货】2026 大模型战局前瞻:从 OpenAI SPUD 到 Gemma 4,本地与云端的架构选择与实战接入
摘要 围绕 OpenAI SPUD(GPT‑5.5/6 级别)、GPC Image 2、DeepSeek V4、QuDeep 3.6 与 Google Gemma 4,本篇从「模型能力演进 → 推理/训练基础设施 → 本地/云端部署架构 → 统一 API 实战」四个维度梳理大模型技术趋势,并给出基于…...
c++如何利用C++23的std--expected重构文件操作的错误管理代码【实战】
std::expected<T, E> 是 C23 提供的零成本错误处理机制,强制调用方显式处理成功与失败分支,适用于预期会失败且需响应的场景(如文件操作、网络请求),优于 errno 返回值、std::optional 或异常滥用。std::expect…...
SuperDuperDB终极指南:如何用你喜爱的工具构建革命性AI代理应用
SuperDuperDB终极指南:如何用你喜爱的工具构建革命性AI代理应用 【免费下载链接】superduperdb Superduper: End-to-end framework for building custom AI applications and agents. 项目地址: https://gitcode.com/gh_mirrors/su/superduperdb SuperDuperD…...
resume-cli实际案例分享:成功求职者的简历配置终极指南
resume-cli实际案例分享:成功求职者的简历配置终极指南 【免费下载链接】resume-cli CLI tool to easily setup a new resume 📑 项目地址: https://gitcode.com/gh_mirrors/re/resume-cli resume-cli是一款基于JSON Resume标准的命令行工具&…...
课堂学习1
Miniconda 安装教程 (2026版) Anaconda 是最流行的 Python 和 R 语言数据科学平台,它包含了康达包管理器(Conda)、Python 以及 1500 个科学包及其依赖项。Miniconda 可以看作是 Anaconda 的“轻装版”,只自带 conda …...
OpenClaw批量处理:用SecGPT-14B同时分析百个可疑文件
OpenClaw批量处理:用SecGPT-14B同时分析百个可疑文件 1. 为什么需要批量安全分析 去年处理一个恶意软件分析项目时,我遇到了一个典型困境:手头有237个待分析样本,每个都需要执行基础静态分析、行为特征提取和威胁评分。如果手动…...
OpenClaw硬件优化:Qwen2.5-VL-7B在低配设备上的运行技巧
OpenClaw硬件优化:Qwen2.5-VL-7B在低配设备上的运行技巧 1. 为什么要在低配设备上运行OpenClaw? 去年夏天,我在一台2018款MacBook Air(8GB内存)上第一次尝试部署OpenClaw时,系统几乎瞬间卡死。这让我意识…...
避坑指南:鸿蒙3.0+Flutter开发BLE应用时,权限、后台保活与多设备管理的那些坑
鸿蒙3.0与Flutter BLE开发实战:破解权限、后台保活与多设备管理的技术困局 在智能穿戴设备和IoT应用蓬勃发展的今天,蓝牙低功耗(BLE)技术已成为连接移动终端与智能硬件的关键桥梁。鸿蒙3.0系统以其分布式能力为BLE开发带来了新的可能性,而Flu…...
