Python爬虫——4.4爬虫案例——requests和xpath爬取招聘网站信息

时间:2022-08-12 18:45:19
# -*-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("全部职位信息爬取完毕")