2022-11-08 16:48

互联网大厂发展慢慢进入了平台期,一些追求长期成长性的应届毕业生,开始将目光投向了中厂。 所谓中厂,指的是规模没那么庞大但在业内也拥有相当知名度和口碑的公司,它们的产品在竞争激烈的市场中也获得了一席之地,甚至让一些大厂为之警惕,是行业中的“潜力股”。BOSS直聘研究院的数据显示,2022年春季,互联网行业的招聘规模处于2019年以来的低点,而求职激烈程度则高于往年,运营和销售类等岗位的求职者竞争则明显加剧。相比大厂,依然在稳定扩张的中厂,似乎成了更好的选择。

那我们今天就利用python技术,来获取下招聘网站上现互联网大厂和中厂的职位数据来详细分析下两者直接的差距。比如这次就以爬取拉勾网上的相关职位及城市,一般大厂都是在一线城市2,因此本次爬取的城市限定为上海。这里会用到的爬虫技术框架是C Sharp,数据来源于拉勾网。因为之前有过爬取招聘网站数据的经验,所以对这些招聘网站的反爬机制比较了解,一般都是封IP比较严,所以对IP的要求会比较高。在接下来的爬取过程中会使用代理亿牛云代理,因为之前的项目一直都在使用这家代理,代理质量还比较好,所以这里也给大家推荐下,好用的产品也要分享才可以。接下来就是爬取数据的实现过程:

// 要访问的目标页面

string targetUrl = "http://httpbin.org/ip";



// 代理服务器(产品官网 www.16yun.cn)

string proxyHost = "http://t.16yun.cn";

string proxyPort = "31111";


// 代理验证信息

string proxyUser = "username";

string proxyPass = "password";


// 设置代理服务器

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();

}

获取数据后需要对数据进行清洗,由于时间关系,还有其他空值、异常值等数据清洗并没有再继续处理。


评论