从零开始,hg0088新2网址大全|官方网站论坛

快捷导航
广告联系qq1031180668广告位
查看: 196|回复: 0
打印 上一主题 下一主题

[python] 网络爬虫之路 代理ip的获取与检测

[复制链接]
  • ta_mind
    开心
    2019-8-2 17:46
  • classn_01: 19 classn_02

    [LV.4]偶尔看看III

    24

    主题

    30

    帖子

    108

    积分

    注册会员

    Rank: 2

    积分
    108
    QQ
    跳转到指定楼层
    楼主
    发表于 2019-7-26 17:34:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    现如今大数据时代,数据的信息的重要性已经涉及到很多的方面。爬虫也因此应运而生,成为了很火的一种技术。现在从事爬虫技术工作的人很多,很多的不管大还是小的公司,只要对数据有需求都需要用到爬虫,而爬虫代理对于数据的获取又是一个不可或缺的要素,很多的代理商也因此诞生。今天我们来分享下大家在数据采集过程必须的过程吗,代理IP的获取与检测。
    许多写爬虫的朋友第一个碰到的难题就是:在对某个网站进行了持续一段时间的爬取之后,网站的反爬虫机制会返回一些错误的结果给爬虫,503、407,,,,要不就是强制给你跳转到登录界面,让你获取elements的时候出错。或者最厉害的就是出现验证码。这时要应对这些问题就需要用到代理IP。接下里以爬取拉勾网的所有招聘信息为例,为大家解决这个问题。
    由于现在网站的代理商很多,代理质量也是参差不齐,但是有点是肯定的,免费的代理质量是不会好到哪里去的,至于付费代理,只有大家实际的去测试了才知道效果。毕竟很多宣传和实际也是有出入的。下文介绍的是亿牛云代理,个人觉得质量很好。
    C Sharp
    ? ? // 要访问的目标页面
    ? ? string targetUrl = "ttps://weibo.com";
    ? ? // 代理服务器
    ? ? string proxyHost = "http://t.16yun.cn";
    ? ? string proxyPort = "6447";
    ? ? // 代理隧道验证信息
    ? ? string proxyUser = "16IXNGXO";
    ? ? string proxyPass = "366338";
    ? ? // 设置代理服务器
    ? ? WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);
    ? ? ServicePointManager.Expect100Continue = false;
    ? ?var request = WebRequest.Create(targetUrl) as HttpWebRequest;
    ? ? request.AllowAutoRedirect = true;
    ? ? request.KeepAlive = true;
    ? ? request.Method? ? = "GET";
    ? ? request.Proxy? ???= proxy;
    ? ? //request.Proxy.Credentials = CredentialCache.DefaultCredentials;
    ? ? request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);
    ? ? // 设置Proxy Tunnel
    ? ? // Random ran=new Random();
    ? ? // int tunnel =ran.Next(1,10000);
    ? ? // request.Headers.Add("Proxy-Tunnel", String.valueOf(tunnel));
    ? ? //request.Timeout = 20000;
    ? ? //request.ServicePoint.ConnectionLimit = 512;
    ? ? //request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";
    ? ? //request.Headers.Add("Cache-Control", "max-age=0");
    ? ? //request.Headers.Add("DNT", "1");
    ? ? //String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUser + ":" + proxyPass));
    ? ? //request.Headers.Add("Proxy-Authorization", "Basic " + encoded);
    ? ? using (var response = request.GetResponse() as HttpWebResponse)
    ? ? using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
    ? ? {
    ? ?? ? string htmlStr = sr.ReadToEnd();
    ? ? }
    我这个是使用的动态转发代理,程序不需要自己管理ip池,配置好就可以直接采集数据,这个比较方便节约时间,他们的后台会自动切换ip。只要程序跑起来采集到数据就是代理用上了。不过这个需要看业务需求,如果需要自己管理ip池,自己控制ip的使用那可以换成api模式的。代理虽然是采集数据的但是程序的反爬策略优化也是不能少的,需要完善自己的爬虫程序,ua,cookie等都需要完善才能更好的采集数据。

    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    手机版|Archiver|小黑屋|sitemap| 从零开始,hg0088新2网址大全|官方网站论坛 - 一个单纯的hg0088新2网址大全|官方网站学习交流论坛 ( 豫ICP备15032706号 )

    GMT+8, 2019-8-20 10:33 , Processed in 1.072307 second(s), 23 queries .

    Powered by Discuz! X3.4

    ? 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表