# -*-coding:utf-8 -*- ''' 使用requests模块进行数据采集,XPath进行数据筛选 ''' import requests from lxml import etree # 定义访问路由 url='http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC%2B%E4%B8%8A%E6%B5%B7%2B%E5%B9%BF%E5%B7%9E%2B%E6%B7%B1%E5%9C%B3&sm=0' # 请输入要爬取多少页 nums=input('请输入要爬取多少页:') f=open('zl.txt','w') for num in range(1,nums+1): get_params={ 'p':num } # 定义请求头 headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } # 发送请求 response=requests.get(url,params=get_params,headers=headers) # 将得到的数据转换为需要的html对象 html=etree.HTML(response.text) # 1.爬取职位名称 # 使用xpath进行匹配 list1=html.xpath("//table[@class='newlist']/tr[1]/td[@class='zwmc']/div") # 定义匹配公司职位列表 job_names=[] for l in list1: name= l.xpath('string(.)').strip() # 将爬取的职位名称加入列表 job_names.append(name) print("第%s页职位名称爬取完毕"%num) # 2.爬取月薪数据 # 使用xpath进行匹配 list2=html.xpath("//table[@class='newlist']/tr[1]/td[@class='zwyx']") # 定义匹配公司职位列表 month_names = [] for l in list2: name = l.xpath('string(.)').strip() # 将爬取的职位名称加入列表 month_names.append(name) print("第%s页月薪数据称爬取完毕" % num) # 3.爬取公司名称 list3=html.xpath("//table[@class='newlist']/tr[1]/td[@class='gsmc']/a[1]") #list3 = html.xpath("//div[@class='newlist_main']/form/div/div/div[@id='newlist_list_div']/div/table[@class='newlist']/tr/td") # 定义匹配公司职位列表 company_names = [] for l in list3: name = l.xpath('string(.)').strip() # 将爬取的职位名称加入列表 company_names.append(name) print("第%s页公司名称爬取完毕" % num) for i in range(0,len(company_names)): info=job_names[i]+"|"+month_names[i]+"|"+company_names[i]+"\r\n" f.write(info.encode('utf-8')) print("第%s页职位信息爬取完毕" % num) f.write("第%s页职位信息爬取完毕"% num+"\r\n") f.write("#"*80+"\r\n") f.close() print("全部职位信息爬取完毕")