经常有前端的程序员被公司临时要求做数据收集,针对某项目进行分析评估。如何才能快速的实现数据采集目标,同时减少程序的研发和运维工作,现在给大家推荐一个基本爬虫策略+爬虫代理IP的方案,从搭建项目到实现数据采集,10分钟时间就够啦,主要分成三个步骤:
1、选择适合的语言框架,一般建议python或java这类面向对象封装较多的语言,根据熟悉程度选择适合的类库使用,例如python下的requests、scrapy或java下的HttpClient、JSoup等。
2、爬虫程序对http的header添加User-Agent,避免被网站反爬统计。除非是访问网站或APP专用数据api接口,正常的HTTP请求都需要进行ua(User-Agent)优化,因为ua是浏览器标识,如果http请求没有ua,或ua太少,都会被网站运维统计异常的,ua越丰富分布就越真实。
3、选择适合的爬虫代理,直接参考demo配置使用即可,以市面上典型的一款爬虫代理产品为例,只需要查看对方的demo,提取代理信息,将目标网站修改成需要采集数据url即可。
以python示例如下
#! -- encoding:utf-8 -- import requests import random # 要访问的目标页面 targetUrl = "http://httpbin.org/ip" # 要访问的目标HTTPS页面 # targetUrl = "https://httpbin.org/ip" # 代理服务器(产品官网 www.16yun.cn) 需要开订单提取新代理信息更新 proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理验证信息 需要开订单提取新代理信息更新 proxyUser = "username" proxyPass = "password" proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host" : proxyHost, "port" : proxyPort, "user" : proxyUser, "pass" : proxyPass, } # 设置 http和https访问都是用HTTP代理 proxies = { "http" : proxyMeta, "https" : proxyMeta, } # 设置IP切换头 tunnel = random.randint(1,10000) headers = {"Proxy-Tunnel": str(tunnel)} resp = requests.get(targetUrl, proxies=proxies, headers=headers) print resp.status_code print resp.text