1.前言  
 现在在疫情阶段,手把手教使用想找一份不错的网络工作变得更为困难,很多人会选择去网上看招聘信息。爬虫可是招聘招聘信息有一些是错综复杂的。而且不能把全部的信息信息全部罗列出来,以外卖的手把手教使用58招聘网站来看,资料整理的网络不清晰。  
 2.项目目标 获取招聘信息,爬虫并批量把地点、招聘 公司名、信息工资 、手把手教使用下载保存在txt文档。网络 3.项目准备 软件:PyCharm 需要的爬虫库:requests、lxml、招聘fake_useragent 网站如下: 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、WordPress模板同一个ip连续访问多次,直接封掉ip,起初我的ip就是这样被封掉的。 为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决。 1、获取正常的 http请求头,并在requests请求时设置这些常规的http请求头。 2、使用 fake_useragent ,产生随机的UserAgent进行访问。 5.项目实现 1、定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库和网址,代码如下所示。 import requests from lxml import etree from fake_useragent import UserAgent class  Zhaopin(object):     def __init__(self):         self.url = "https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={}"  # /zhuanchang/:搜索的名字的拼音缩写     def main(self):         pass if __name__ == __main__:     Spider =  Zhaopin()     Spider.main()         2、随机产生UserAgent。 for i in range(1, 50):     self.headers = {         User-Agent: ua.random,     }         3、发送请求,获取响应, 页面回调,免费信息发布网方便下次请求。 def get_page(self, url):     res = requests.get(url=url, headers=self.headers)     html = res.content.decode("utf-8")     return html         4、xpath解析找到对应的父节点。 def page_page(self, html):     parse_html = etree.HTML(html)     one = parse_html.xpath(//div[@class="main clearfix"]//div[@class="leftCon"]/ul/li)         5、for遍历,定义一个变量food_info保存,获取到二级页面对应的菜 名、 原 料 、下 载 链 接。 for l in one:    o = l.xpath(.//a/span[1]/text())[0].strip()    t = l.xpath(.//a//span[@class="name"]/text())[0].strip()    f = l.xpath(.//p[@class="job_salary"]/text())    thr = l.xpath(.//div[@class="comp_name"]//a/text())[0].strip()    for e in f:        boss =  %s:||%s:  公司:%s, 工资:%s元/月 =========================================================                                 % (o, t, thr, e)    print(str(boss)         6、将结果保存在txt文档中,如下所示。 f = open(g.txt, a, encoding=utf-8)  # 以w方式打开文件 f.write(str(boss)) # print(house_dict) f.write("\n")  # 键和值分行放,键在单数行,值在双数行 f.close()         7、调用方法,实现功能。 html = self.get_page(url) self.page_page(html)         6.效果展示 1、点击绿色小三角运行输入起始页,终止页。  
 2、运行程序后,结果显示在控制台,如下图所示。  
 3、保存txt文档到本地,如下图所示。  
 4、双击文件,内容如下图所示。  
 7.小结 1、b2b信息网不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。 2、本文章就Python爬取招聘网,在应用中出现的难点和重点,以及如何防止反爬,做出了相对于的解决方案。 3、介绍了如何去拼接字符串,以及列表如何进行类型的转换。 4、代码很简单,希望能够帮到你。 5、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。 6、可以选择自己喜欢的分类,获取工作,找到自己喜欢工作。  |