C#爬虫抓取搜狗搜索第一条链接网页的标题

首先要安装ScrapySharp和HtmlAgilityPack,NuGet里面安装就可以了。
搜狗搜索2020年首探火星,打开开发者工具,得到以下界面
在这里插入图片描述
之后是第一条链接的页面:
在这里插入图片描述
此次完成的就是使用代码直接完成搜索引擎的第一条链接的读取。
下面附上C#代码:

using System;
using System.Collections.Generic;
using ScrapySharp.Network;
using ScrapySharp.Extensions;
using HtmlAgilityPack;

namespace ExtractBaiduPage
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri uri = new Uri("https://www.sogou.com/web?query=2020%E5%B9%B4%E9%A6%96%E6%8E%A2%E7%81%AB%E6%98%9F&_asf=www.sogou.com&_ast=&w=01015002&p=40040108&ie=utf8&from=index-nologin&s_from=index&oq=&ri=0&sourceid=sugg&suguuid=&sut=17893&sst0=1562497060595&lkt=0%2C0%2C0&sugsuv=1562497028320274&sugtime=1562497060595&pid=sogou-wsse-af5baf594e9197b4-0001");
            ScrapingBrowser browser1 = new ScrapingBrowser ();
            string html1 = browser1.DownloadString(uri) ;
            HtmlDocument dc = new HtmlDocument();

            try {
                dc.LoadHtml(html1);
                HtmlNode htmlNode = dc.DocumentNode;
                var href = htmlNode.CssSelect("h3.vrTitle").CssSelect("a");
                List<string> links=new List<string> ();
                
                foreach (var node in href)
                {
                    string tmpStr = (string)node.Attributes["href"].Value;
                    links.Add(tmpStr);
                }
                string firstLink = "https://www.sogou.com" + links[0];//读取出来的东西,需要加上前缀才能使用

                Uri nUri = new Uri(firstLink);//这个str参数里面必须有http之类的东西
                
                string html2 = browser1.DownloadString(nUri);
                dc.LoadHtml(html2);//搜狗这里得到的数据不能用,必须再次抓取数据,应该就是反爬机制吧

                string scondLink = html2.Substring(html2.IndexOf('(')+2, (html2.IndexOf(')')- html2.IndexOf('('))-3) ;//抓取需要的数据,根据具体情况调整
                

                 string html3 = browser1.DownloadString(new Uri(scondLink));
                 dc.LoadHtml(html3);
               
                htmlNode = dc.DocumentNode;
                href = htmlNode.CssSelect("title");//抓取该页标题
                foreach (var item in href)
                {
                    Console.WriteLine(item.InnerText);
                }
                Console.ReadKey();
            }
            catch
            {
                Console.WriteLine("失败");
                Console.ReadKey();
                return;
            }
           
            
        }
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于使用C#来编写爬虫抓取网站后台数据,您可以借助一些库和框架来实现。以下是一个基本的步骤指南: 1. 首先,您需要使用C#的网络请求库,例如HttpClient,来发送HTTP请求到目标网站。您可以使用GET或POST方法发送请求,并传递必要的参数。 2. 接下来,您可以使用HTML解析库,例如HtmlAgilityPack,来解析网页内容。这样您可以提取出所需的数据,如文本、链接、表格等等。 3. 如果目标网站需要登录或进行身份验证,您可能需要模拟登录过程。通过发送POST请求,将用户名和密码等凭据提交给登录页面,并在后续请求中使用Cookie来维持登录状态。 4. 在获取到所需数据后,您可以将其保存到数据库中或进行进一步处理和分析。您可以使用C#的数据库访问库,如Entity Framework或SqlClient,来连接和操作数据库。 5. 最后,为了确保爬取过程的合法性和稳定性,建议添加适当的延时和错误处理机制。遵守网站的robots.txt文件中的规定,并设置合理的请求间隔,以免给目标网站造成过大的负担。 请注意,在进行网络爬虫时,应该遵守法律法规和网站的使用规则,确保以合法和道德的方式使用爬虫技术。此外,如果目标网站有反爬虫机制,您可能需要采取一些反反爬虫的策略来应对。 希望以上信息对您有所帮助!如果您有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值