手把手教你使用Python网络爬虫获取招聘信息

开发 后端
现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗列出来,以外卖的58招聘网站来看,资料整理的不清晰。

1.前言

 

[[333120]]

现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗列出来,以外卖的58招聘网站来看,资料整理的不清晰。

 

2.项目目标

获取招聘信息,并批量把地点、 公司名、工资 、下载保存在txt文档。

3.项目准备

软件:PyCharm

需要的库:requests、lxml、fake_useragent

网站如下:

 

  1. https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={} 

点击下一页时,ClickID={}每增加一页自增加1,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。

4.反爬措施

该网站上的反爬主要有两点:

1、 直接使用requests库,在不设置任何header的情况下,网站直接不返回数据

2、同一个ip连续访问多次,直接封掉ip,起初我的ip就是这样被封掉的。

为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决。

1、获取正常的 http请求头,并在requests请求时设置这些常规的http请求头。

2、使用 fake_useragent ,产生随机的UserAgent进行访问。

5.项目实现

1、定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库和网址,代码如下所示。

 

  1. import requests 
  2. from lxml import etree 
  3. from fake_useragent import UserAgent 
  4.  
  5.  
  6. class  Zhaopin(object): 
  7.     def __init__(self): 
  8.         self.url = "https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={}"  # /zhuanchang/:搜索的名字的拼音缩写 
  9.  
  10.     def main(self): 
  11.         pass 
  12.  
  13. if __name__ == '__main__'
  14.     Spider =  Zhaopin() 
  15.     Spider.main() 

2、随机产生UserAgent。

 

  1. for i in range(1, 50): 
  2.     self.headers = { 
  3.         'User-Agent': ua.random, 
  4.     } 

3、发送请求,获取响应, 页面回调,方便下次请求。

 

  1. def get_page(self, url): 
  2.     res = requests.get(url=url, headers=self.headers) 
  3.     html = res.content.decode("utf-8"
  4.     return html 

4、xpath解析找到对应的父节点。

 

  1. def page_page(self, html): 
  2.     parse_html = etree.HTML(html) 
  3.     one = parse_html.xpath('//div[@class="main clearfix"]//div[@class="leftCon"]/ul/li'

5、for遍历,定义一个变量food_info保存,获取到二级页面对应的菜 名、 原 料 、下 载 链 接。

 

  1. for l in one: 
  2.    o = l.xpath('.//a/span[1]/text()')[0].strip() 
  3.    t = l.xpath('.//a//span[@class="name"]/text()')[0].strip() 
  4.    f = l.xpath('.//p[@class="job_salary"]/text()'
  5.    thr = l.xpath('.//div[@class="comp_name"]//a/text()')[0].strip() 
  6.    for e in f: 
  7.        boss = ''
  8.  
  9. %s:||%s:  
  10. 公司:%s, 
  11. 工资:%s元/月 
  12. ========================================================= 
  13.                                ''' % (o, t, thr, e) 
  14.    print(str(boss) 

6、将结果保存在txt文档中,如下所示。

 

  1. f = open('g.txt''a', encoding='utf-8')  # 以'w'方式打开文件 
  2. f.write(str(boss)) 
  3. # print(house_dict) 
  4. f.write("\n")  # 键和值分行放,键在单数行,值在双数行 
  5. f.close() 

7、调用方法,实现功能。

 

  1. html = self.get_page(url) 
  2. self.page_page(html) 

6.效果展示

1、点击绿色小三角运行输入起始页,终止页。

 

 

 

 

2、运行程序后,结果显示在控制台,如下图所示。

 

 

 

 

3、保存txt文档到本地,如下图所示。

 

 

 

 

4、双击文件,内容如下图所示。

 

 

 

 

7.小结

1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

2、本文章就Python爬取招聘网,在应用中出现的难点和重点,以及如何防止反爬,做出了相对于的解决方案。

3、介绍了如何去拼接字符串,以及列表如何进行类型的转换。

4、代码很简单,希望能够帮到你。

5、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

6、可以选择自己喜欢的分类,获取工作,找到自己喜欢工作。

责任编辑:华轩 来源: Python爬虫与数据挖掘
相关推荐

2018-05-16 15:46:06

Python网络爬虫PhantomJS

2018-05-14 15:27:06

Python网络爬虫爬虫架构

2018-05-22 15:30:30

Python网络爬虫分布式爬虫

2018-05-22 16:28:46

Python网络爬虫URL去重

2021-11-09 09:01:36

Python网络爬虫Python基础

2018-05-16 13:50:30

Python网络爬虫Scrapy

2018-05-14 16:34:08

Python网络爬虫Scrapy

2021-05-10 06:48:11

Python腾讯招聘

2021-01-30 10:37:18

ScrapyGerapy网络爬虫

2021-07-14 09:00:00

JavaFX开发应用

2021-09-01 14:49:48

curl2pypython工具

2020-12-08 10:32:15

Python邮件tcp

2018-05-14 14:02:41

Python爬虫网易云音乐

2022-03-30 09:11:00

Python网络爬虫

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印机

2021-10-25 10:56:16

局域网络网络技术 WiFi

2021-04-01 09:02:38

Python小说下载网络爬虫

2022-12-07 08:42:35

2021-11-25 08:11:47

JS网站信息
点赞
收藏

51CTO技术栈公众号