在这个时代,数据越来越重要,数据=金钱,已经成为定理。我们在学习掌握使用Python进行数据采集的过程要全面。在掌握知识后运用到实践中我们需要注意很多知识,今天就简单的进行总结下。
1、爬取目标网站,不一定得非用python写爬虫,需要根据实际需求进行选择,例如一些需要用浏览器访问的就可以使用selenium。
2、爬取网站的速度很重要,爬虫速度快,获取的数据量大,节约的成本也多。需要大量采集数据的话,学会使用框架,比如scrapy。
3、一些最简单的反爬措施要熟练,增加User-Agent,获取cookie,加代理ip都是最简单的反爬策略。
这里我们重点讨论下网站的反爬,大部分网站都会需要你的代码有headers的信息,如果没有,会直接拒绝你的访问,这样的情况我们直接加上UA就可以,如果是封ip的加上代理ip就可以。很多小伙伴不会在爬虫程序里面添加代理,今天我们就示例一个最简单使用的代理的使用方式,即动态转发。代理添加部分的demo如下:
#! -*- encoding:utf-8 -*-
import base64
import sys
import random
PY3 = sys.version_info[0] >= 3
def base64ify(bytes_or_str):
if PY3 and isinstance(bytes_or_str, str):
input_bytes = bytes_or_str.encode('utf8')
else:
input_bytes = bytes_or_str
output_bytes = base64.urlsafe_b64encode(input_bytes)
if PY3:
return output_bytes.decode('ascii')
else:
return output_bytes
class ProxyMiddleware(object):
def process_request(self, request, spider):
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "username"
proxyPass = "password"
request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
# 添加验证头
encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
# 设置IP切换头(根据需求)
tunnel = random.randint(1,10000)
request.headers['Proxy-Tunnel'] = str(tunnel)
还有很多的注意事项就不一一的列举出来了,大家在实践的过程中去解决,最后关于代理的使用有需求的小伙伴可以咨询这里www.16yun.cn/#banner。