爬虫程序十分钟入门
经常有前端的程序员被公司临时要求做数据收集,针对某项目进行分析评估。如何才能快速的实现数据采集目标,同时减少程序的研发和运维工作,现在给大家推荐一个基本爬虫策略+爬虫代理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
爬虫程序十分钟入门
xiaotaomi
会员积分:6520
经常有前端的程序员被公司临时要求做数据收集,针对某项目进行分析评估。如何才能快速的实现数据采集目标,同时减少程序的研发和运维工作,现在给大家推荐一个基本爬虫策略+爬虫代理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
20-12-02 16:05
692
0
回复
暂无评论