使用HtmlAgilityPack抓取Ethereum Tokens信息

简介: 使用HtmlAgilityPack抓取Ethereum Tokens信息 class Program { static void Main(string[] args) { try {...

使用HtmlAgilityPack抓取Ethereum Tokens信息

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                for (int i = 1; i <= 11; i++)
                {
                    string url = "https://etherscan.io/tokens?p="+i;
                    HtmlWeb webClient = new HtmlWeb();
                    HtmlDocument doc = webClient.Load(url);

                    var tbody = doc.DocumentNode.SelectSingleNode("//*[@id='ContentPlaceHolder1_divresult']/table/tbody");
                    var trItems = tbody.SelectNodes("tr");
                    foreach (var tr in trItems)
                    {
                        try
                        {
                            var tdItems = tr.SelectNodes("td");
                            string id = tdItems[0].SelectSingleNode("b//span").InnerHtml.Replace(" ", "");
                            string contractAddress = tdItems[1].SelectSingleNode("a").Attributes["href"].Value.Replace("/token/", "");
                            string tokenLogo = "https://etherscan.io" + tdItems[1].SelectSingleNode("a/img").Attributes["src"].Value;
                            string temp = tdItems[2].SelectSingleNode("h5/a").InnerHtml;
                            string tokenName = temp.Substring(0, temp.IndexOf(" "));
                            string tokenSymbol = temp.Substring(temp.IndexOf("(") + 1, temp.IndexOf(")") - temp.IndexOf("(") - 1);
                            string tokenDescribe = tdItems[2].SelectSingleNode("small/font").InnerHtml;

                            string tokenUrl = "https://etherscan.io/token/" + contractAddress;
                            HtmlWeb webtokenClient = new HtmlWeb();
                            HtmlDocument tokendoc = webtokenClient.Load(tokenUrl);
                            string tokenDecimal = tokendoc.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[5]/div[1]/div[2]/table[1]/tr[2]/td[2]").InnerHtml.Replace("\n", "");
                            Console.WriteLine($"{id}\t{contractAddress}\t{tokenSymbol}\t{tokenDecimal}\t{tokenName}\t{tokenLogo}\t{tokenDescribe}\t");
                        }
                        catch (Exception ex)
                        {

                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            Console.Read();
        }
    }

博客内容仅代表个人观点,如发现阐述有误,麻烦指正,谢谢!
目录
相关文章
|
5月前
|
传感器 人工智能 开发框架
LangChain 构建问题之tools列表中search_by_exact工具的添加如何解决
LangChain 构建问题之tools列表中search_by_exact工具的添加如何解决
22 0
|
SQL 安全 网络安全
CTF夺旗赛(WEB)-Guess Next Session
CTF夺旗赛(WEB)-Guess Next Session
|
开发框架 移动开发 前端开发
如何使用C#和HTMLAgilityPack抓取网页
HTMLAgilityPack是一款备受欢迎的用于解析和操作HTML文档的库。在使用之前,开发者需要考虑一些优缺点。下面是一些值得注意的优点: 1. 强大的错误容忍性 2. 灵活的API 3. 广泛的应用场景 然而,也有一些缺点需要考虑: 1. 性能问题 2. 对最新HTML特性的支持限制 3. 可能存在依赖和冲突
138 0
|
JavaScript 前端开发
webpack5不要再用url-loader了
webpack5 新增 Asset Modules 资源模块
289 0
|
JSON JavaScript 数据格式
HackerNews05-通过使用url模块的parse方法获取用户get提交的数据|学习笔记
快速学习 HackerNews05-通过使用url模块的parse方法获取用户get提交的数据
HackerNews05-通过使用url模块的parse方法获取用户get提交的数据|学习笔记
|
数据采集 Web App开发 JSON
Python爬虫系列1-通过requests Payload方式抓取掘金数据
在给同事抓取个人文章数据的时候发现get形式获取不到数据,通过分析网站结构发现需要Post请求的json格式数据;进而发现其使用的Post格式并不是Form Data 而是Request Payload ,再解决之际,顺手写成博客供大家学习使用,如有帮助-还请点赞👍关注!将持续更新更多新的文章。
1049 0
Python爬虫系列1-通过requests Payload方式抓取掘金数据
|
前端开发 JavaScript 编译器
使用Skypack在浏览器上直接导入ES模块
使用Skypack在浏览器上直接导入ES模块
314 0
使用Skypack在浏览器上直接导入ES模块
5、web爬虫,scrapy模块,解决重复ur——自动递归url
一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 记录url可以是缓存,或者数据库,如果保存数据库按照以下方式: i...
2003 0
|
Web App开发 自然语言处理 前端开发
node.js爬虫应用——前端程序员的词典command-translator
虽然高考英语考了135分,大学英语四级也过了,可到现在,写了两年代码,经常在写一个变量的时候,想半天也想不出来对应的英文单词是什么,总不能很可 (sha) 爱(bi) 的去用拼音吧,最后还是只能去求助有道了。虽然说打开有道网页,然后输入词语翻译不算太麻烦,担保每次都这样,总觉得不够方便,也不够逼格。
1941 0