【实战】网页采集_百度贴吧标题

大致步骤

1.建立连接
2.摘写请求报文
3.处理响应报文

相关信息

1.百度贴吧帖子格式

Url:tieba.baidu.com/p/id
title:
贴吧404        该帖已经被删除。
百度贴吧        该帖所在吧被合吧。
新帖创建频率:800贴/min

2.请求报文

请求报文:
GET /p/id/index.html HTTP/1.1
Host:tieba.baidu.com:80

首次尝试

class Tie
{
    Socket sc;
    long P;
    public Tie(long p)
    {
        P = p;
        NewSocket();
        Start();
    }
    void NewSocket()
    {
        sc = new Socket(2, 1, 6);
        sc.ReceiveTimeout = 5000;
        sc.SendTimeout = 5000;
    }
    void Start()
    {
        try{
            //建立连接
            sc.Connect("tieba.baidu.com",80);
            //发送报文
            sc.Send(b,b.length,0);
            //接受报文(接受到</title>为止)
            sc.Receive(b,b.length,0);
        }catch{}finally
        {
            //断开连接
            sc.Close();
        }
    }
}
200ms/贴

优化

class Tie
{
    Socket sc;
    long P;//每张贴的id
    TieList Tl;
    //异步连接
    public void NewSocket()
    {
        sc = new Socket(2, 1, 6);
        P = Tl.getP();
    }
    public void Start()
    {
        sc.BeginConnect("tieba.baidu.com",80,CallBack,null);
    }
    public void CallBack(IAsyncResult Ir)
    {
        try
        {
            //发送报文
            sc.Send(b,b.length,0);
            //接受,处理报文(接受到</title>为止)
            sc.Receive(b,b.length,0);
            //请求新的IP
            P = Tl.getP();
        }catch{}finally{
            //断开连接
            try
            {
                sc.EndConnect();
            }catch{}
        }
        //若成功,P更新,出现异常,P不变,进入循环。
        Begin();
    }
}
class TieList
{
    //管理多个Tie实例的类。
    long P;
    private readonly object o = new object();
    public long GetP()
    {
        lock (o1)
        {
             long l = P;
             P += W;
             return l;
         }
    }
}
30ms/贴 线程数:50

存在问题

该服务器会在短时间内发现该程序,并限制其效率( ̄▽ ̄)"

解决办法

改写请求报文:

请求报文:
GET /p/id/index.html HTTP/1.1
Host:tieba.baidu.com:80
Cookie:TIEBA_USERTYPE = 240918a9690f******; wise_device = 0; BAIDUID = 5536A9D00334A2********: FG = 1

相当于获得一个游客身份登陆
修改前:处理速度能维持20秒左右
修改后:处理速度能维持超过5分钟

注意!!

没有一个网站管理者会喜欢遇到这种东西,因此在请求报文加上下面两行。
User-Agent://程序的名字和目的。
From://可以与你联系的途径,邮箱或微信之类的。
给大家留一个可以商讨的余地。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值