八、九月份是一年中的求职高峰期,一大波应届毕业生涌入市场,加上疫情因素下,很多行业都没有那么景气,很多人应届生表示想要找到理想工作变得难上加难! 现在大家找工作都是通过各种招聘app,信息全部罗列出来,可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗列出来,这样也让人很苦恼,所以今天我们就通过爬虫技术,为大家解决这个问题。首先我们的爬取目标是获取招聘信息,并批量把地点、 公司名、工资 、等详细资料做成文档。这里我们就以boss直聘为例。在获取数据之前简单的对网站进行了分析,该网站上的反爬主要有两点。1、 直接使用requests库,在不设置任何header的情况下,网站直接不返回数据。2、同一个ip连续访问多次,直接封掉ip。 为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决。1、获取正常的 http请求头,并在requests请求时设置这些常规的http请求头。2、使用代理IP进行访问。代理IP的选择比较多,比如现在我们使用的亿牛云代理,简单实现过程如下:
代码语言:javascript复制#! -*- 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
```最后做个小的总结,在获取数据的过程中不建议抓取太多数据,容易对服务器造成负载。本文分享的是爬取招聘网,在实际过程中出现的难点和重点,以及如何防止反爬,做出了相对于的解决方案。对于新手爬虫建议大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,只有自己实践了才能掌握到真正的技术。