如何利用 C# 爬取带 Token 验证的网站数据?

news/2024/5/20 15:48:03/文章来源:https://lsgogroup.blog.csdn.net/article/details/88750238

在对文本数据的情感分析中,基于情感词典的方法是最简单也是最常用的一种了。

它的大体思路如下:

对文档分词,找出文档中的情感词、否定词以及程度副词,然后判断每个情感词之前是否有否定词及程度副词,将它之前的否定词和程度副词划分为一个组,如果有否定词将情感词的情感权值乘以-1,如果有程度副词就乘以程度副词的程度值,最后所有组的得分加起来,大于 0 的归于正向,小于 0 的归于负向。

这两天,学校的一个团队让我帮忙爬取某网站的两份带有权值的情感词典。

第一份是“台湾大学情感词汇库”,有 11086 个带有权值的情感词。

台湾大学情感词汇库

第二份是“萌泰情感词汇库”,有 27466 个带有权值的情感词。

萌泰情感词汇库

分析这个网站,我们发现每一个网络请求都需要携带 Token,即身份认证。

所以,我们需要先通过登陆请求,获取到该用户的 Token,之后的每次请求带上该 Token 才能爬取到该网站的数据。


为了快速完成爬取这两份情感词典的任务,我使用了两套开源代码,RestSharpNewtonsoft.Json

RestSharp

利用该开源代码可以得到网络请求之后的 Json 数据,其下载地址如下:

https://github.com/restsharp/RestSharp

RestSharp

Newtonsoft.Json

利用该开源代码可以对得到的 Json 数据进行反序列化,得到 C# 对应的类,其下载地址如下:

https://github.com/JamesNK/Newtonsoft.Json

Newtonsoft.Json


Newtonsoft.Json 这套开源代码,我在 如何利用 C# 爬取「猫眼电影专业版:票房」数据! 以及 如何做一款「桌面版百度翻译」软件? 中使用过,以前网络请求部分都是通过 HttpWebRequest直接写的,这次偷懒使用了 RestSharp 这套来源代码。

如果大家对这两套开源代码感兴趣,给我留言,我再来写几篇图文介绍它们,下面来看看爬取情感词典的代码。

1. 构造接收 Token 的类 UserInfor

public class Token
{public string token;
}public class UserInfor
{public Token rt_info;
}

2. 得到登陆用户的Token数据。

public string GetToken(string baseUrl,string username,string password)
{string value = "{\"username\":\"" + username + "\",\"password\":\"" + password + "\"}";RestClient client = new RestClient(baseUrl);RestRequest request = new RestRequest(Method.POST);request.AddHeader("cache-control", "no-cache");request.AddHeader("Content-Type", "application/json;charset=UTF-8");request.AddParameter("application/json", value, ParameterType.RequestBody);IRestResponse response = client.Execute(request);StringReader sr = new StringReader(response.Content);JsonTextReader jsonReader = new JsonTextReader(sr);JsonSerializer serializer = new JsonSerializer();UserInfor user = serializer.Deserialize<UserInfor>(jsonReader);return user.rt_info.token;
}

3. 构造接收“情感词典”的类 JsonWord

public class Word
{public string word;public string score;public override string ToString(){return word + "," + score;}
}public class MapInfo
{public List<Word> words;
}public class JsonWord
{public MapInfo rt_mapinfo;
}

4. 得到所需要的情感词典。

public List<Word> GetDictionary(string baseUrl,string token,int dictionaryId)
{string value = "{\"dictionaryId\":" + dictionaryId + ",\"name\":\"\",\"pageNow\":1,\"pageSize\":200000}";RestClient client = new RestClient(baseUrl);RestRequest request = new RestRequest(Method.POST);request.AddHeader("cache-control", "no-cache");request.AddHeader("Content-Type", "application/json");request.AddHeader("Authorization", token);request.AddParameter("application/json",value, ParameterType.RequestBody);IRestResponse response = client.Execute(request);StringReader sr = new StringReader(response.Content);JsonTextReader jsonReader = new JsonTextReader(sr);JsonSerializer serializer = new JsonSerializer();JsonWord r = serializer.Deserialize<JsonWord>(jsonReader);return r.rt_mapinfo.words;
}

5. 输出感情词典。

static void SaveToFile(List<Word> lst)
{string str = string.Empty;for (int i = 0; i < lst.Count; i++){str += lst[i] + "\r\n";}string temp = Environment.GetEnvironmentVariable("TEMP");temp += "\\words.txt";StreamWriter sw = File.CreateText(temp);sw.Write(str);Process.Start(temp);sw.Close();
}

包含 11086 个词汇以及评分的“台湾大学情感词汇”爬取结果如下:

台湾大学情感词汇

包含 27466 个词汇以及评分的“蒙泰感情词汇”爬取结果如下:

蒙泰感情词汇


通过以上的介绍,如何利用 C# 爬取带 Token 验证的网站数据?就介绍完了,如果大家发现所要爬取的网站不能直接得到HTML DOM TREE,这个网站或许就是利用前后端分离技术完成的,如果这样的网站每一次请求都需要带Token,可以尝试使用我今天介绍的方法。好了,今天就到这里吧!See You!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_700845.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

京东一面,面试官问我如何用 Nginx 禁止国外 IP 访问网站,我直接凉凉!

欢迎关注方志朋的博客&#xff0c;回复”666“获面试宝典来源&#xff1a;toutiao.com/i6860736292339057156/之前看了下 Nginx 的访问日志&#xff0c;发现每天有好多国外的 IP 地址来访问我的网站&#xff0c;并且访问的内容基本上都是恶意的。因此我决定禁止国外 IP 来访问我…

在Red Hat Linux5下构建LAMP网站服务平台之MySQL、PHP的安装与配置

在Red Hat Linux5下构建LAMP网站服务平台之MySQL、PHP的安装与配置 2010-09-09 16:40:49标签&#xff1a;PHP Linux mysql RedHat    [推送到技术圈] 版权声明&#xff1a;原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和…

基于SpringBoot+MyBatis+Vue的音乐网站

欢迎关注方志朋的博客&#xff0c;回复”666“获面试宝典项目说明 本音乐网站的客户端和管理端使用 Vue 框架来实现&#xff0c;服务端使用 Spring Boot MyBatis 来实现&#xff0c;数据库使用了 MySQL。实现思路可以看这里&#xff1a;https://yin-hongwei.github.io/2019/03…

网站速度优化模块HttpCompressionModule

为了优化网站的访问速度&#xff0c;准备采用HttpCompressionModule 6对传输数据进行压缩&#xff0c;下载了HttpCompressionModule 6 , 并按照示例程序中的web.config配置了网站的web.config。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:offi…

Python 实战:定时对网站进行签到

作者 | 朱小五来源 | 快学Python我今天呢&#xff0c;要给大家分享一下升级款——request方式。具体做法首先打开我们需要签到的网站&#xff0c;使用Chrome浏览器的F12快捷键&#xff08;或通过鼠标右键菜单“检查”&#xff09;打开浏览器的开发者工具&#xff0c;点击 Netwo…

有哪些好的刷题网站?2017年最受欢迎的编程挑战网站

程序猿&#xff08;ID&#xff1a;imkuqin&#xff09; 猿妹编译编译自&#xff1a;https://medium.freecodecamp.org/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f 编程几乎已经成为了人类所知每个行业的必要组成部分&#xff0c;如今有越来越多的人开…

侠客X官方网站成立,第一个内测版本即将放出,敬请期待.

这是一个难忘的日子&#xff0c;西方的情人节&#xff0c;本站的成立代表侠客X&#xff0c;即将与大家见面了。 我们的要做的是&#xff0c;传承侠客站群经典模式&#xff0c;打造SEO王者力作&#xff0c;侠客X即将公开测试&#xff0c;敬请期待。 http://xpk.in Qin 转载于:ht…

SEO研究:网站结构

在衡量所有权重之间&#xff0c;网站结构大概占到30%&#xff0c;这也是很多网站排名不好&#xff0c;或者有站长根本不用优化就能获得很好排名的原因。说到结构必须明白两个概念&#xff0c;一个是物理概念,就是文件存放的路径&#xff0c;另一个是逻辑结构。比较好的情况是逻…

【百度地图API】——国内首款团购网站的地图插件

摘要&#xff1a; 本文介绍了一款应用在团购网站上的地图插件&#xff0c;适用于目前非常流行的团购网站。使用这款地图插件&#xff0c;无需任何编程技术&#xff0c;你就把商家的位置轻松地标注在地图上。 前台地址 http://map.baidu.com/fwmap/upload/r/map/fwmap/tuangou/u…

用Python轻松制作一个股票K线图网站

在前面的文章中&#xff0c;我们学习了如何使用 Tkinter 构建股票数据抓取以及展示K线图功能&#xff0c;虽然大致的功能已经具备&#xff0c;但是在当今这个人手一个 Web 服务的年代&#xff0c;GUI 程序还是没有 Web 服务来的香啊。我们需要用到的知识包括 PyEcharts 的使用&…

边玩游戏边学Git?这个开源网站我爱了

Git作为世界上最流行的版本控制系统&#xff0c;可以说是每一位与程序打交道的朋友最值得学习的软件之一。除了管理自己的项目&#xff0c;如果你对参与开源项目感兴趣&#xff0c;那么Git更是联结Github、Gitlab等知名代码项目托管网站&#xff0c;与他人协作管理推进开源项目…

15个新鲜的单页网站设计实例

单页网站因为结合着css3 html5和jquery技术 使得这样的网站看这些网站看起来更具吸引力和新鲜的感&#xff0c;逐渐成为互联网上一个新趋势 &#xff0c;今天介绍网站设计一些新鲜的例子 。我希望大家将欣赏这美妙的设计师做的工作。随时分享您的看法&#xff0c; 1) Pigspotte…

【第15周复盘】B站是个学习的网站

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

【组队学习】【26期】编程实践(Django网站开发)

编程实践&#xff08;Django网站开发&#xff09; 论坛版块&#xff1a; http://datawhale.club/c/team-learning/28-category/28 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/Django 学习目标 从零开始搭建一个属于自己…

大型网站架构演变和知识体系

存爱好&#xff0c;作为收藏&#xff0c;原地址&#xff1a;http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html&#xff0c;同时向原创致敬之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#…

正确设置php-fpm和nginx防止网站被黑

2019独角兽企业重金招聘Python工程师标准>>> 核心总结&#xff1a;php-fpm 子进程所使用的用户&#xff0c;不能是网站文件所有者。 凡是违背这个原则&#xff0c;则不符合最小权限原则。 根据生产环境不断反馈&#xff0c;发现不断有 php网站被挂木马&#xff0c;绝…

jiathis:社交化数据分析 帮助网站提高流量

随着微博的兴起&#xff0c;社会化营销逐渐走进我们的生活&#xff0c;不管是杜蕾斯微博事件还是最近在小米大战360&#xff0c;都是在社会化平台上面进行&#xff0c;而 如何方便的将网站内 容分享至社会化媒体&#xff0c;&#xff0c;大部分博主会选择工具&#xff0c;但选择…

[Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据

一、介绍 本例子用Selenium phantomjs爬取界面&#xff08;https://a.jiemian.com/index.php?msearch&aindex&typenews&msg电视&#xff09;的资讯信息&#xff0c;输入给定关键字抓取资讯信息。 给定关键字&#xff1a;数字&#xff1b;融合&#xff1b;电视 抓取…

45个优秀的国外电子商务网站设计实例

这篇文章与大家分享45个国外优秀的电子商务网站设计案例&#xff0c;希望能带给你灵感。对于电子商务网站来说&#xff0c;也许销售更多产品比漂亮的外观设计更重要&#xff0c;不过漂亮的东西总是能给用户留下深刻的印象&#xff0c;一起欣赏。 TALBOTS Free People Armani Ex…

个人谈谈seo

为什么80%的码农都做不了架构师&#xff1f;>>> 我不知道大家有没有做过seo的工作。以前我是一各技术人员。纯技术开发或技术管理人员。基本上也没有接触过seo的相关工作&#xff0c;整天在写代码或看别人的代码 。干了六年只见他们都在谈友情链接。做推广&#xf…