小白爬虫入门~python爬取职友集招聘职位信息

首先打开职业集网页,选择人气公司招聘排名中的字节跳动公司,点开招聘选项,发现下面有各种各样的招聘信息,此时随着不断地往下点击,如果跳转到评论中的第二页,会发现上面的地址栏发生变化
地址栏发生变化对应的网址改为p2,猜想应该为page2,这个网站应该为静态网站。
看source当中有没有相应的内容,如果能够查找到就是静态网站,无法查找到就是动态网站,Network为浏览网页时向服务器发送的请求。
对应的网站信息爬虫主要就是发送信息和接受信息的过程,模拟浏览器的操作
运行相应的程序

import   requests
url = 'https://www.jobui.com/company/10375749/jobs/p1/'
resp = requests.get(url)
print(resp.text)

发送请求之后未获得数据返回403,说明爬虫被发现了,
如果想要对于后续的公司进行查找的时候,如果每次都通过修改网址来修改程序,就把程序写死了,中间网址的参数(公司的编号)不一样,
字节跳动公司网址所以只需要修改编号,就可以换成不同的公司,网址中公司的id是可变的,公司的页数是可变的,封装成一个函数,固定不变的作函数体,可变的作函数的参数。
使用BeautifulSoup进行文本的解析
BeautifulSoup解析文本
在这里插入图片描述发现这些内容都在h3对应的标签之中
h3对应的标签找寻一下共有多少个相应的标签
job对应的标签
爬取对应网站的两页数据

import   requests
from  bs4  import  BeautifulSoup    #用于解析和提取数据
def  send_request(id,page):
    url = 'https://www.jobui.com/company/{0}/jobs/p{1}/'.format(id,page)
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}
    resp = requests.get(url,headers = headers)
    print(resp.text)
    #通过resp.text获取服务器返回的数据
    return  resp.text

def  pares_html(html):  #html是从服务器端响应回来的数据(内容)
#BeautifulSoup作用:解析和提取数据,bs的类型为bs4.BeautifulSoup类型,可以使用对象
#中的方法进行数据的提取
    bs = BeautifulSoup(html,'html.parser')  #得到BeautifulSoup的对象
    job_lst = bs.find_all('div',class_='c-job-list')  #得到包含职位的div---15个
    for  item  in  job_lst:     #分别遍历每一个职位数据,每一个item就是一个c-job-list
        name = item.find('h3').text
   #只想要标签里面的内容的时候,后面加上一个text函数
        print(name)
    
def  start(id,pages):
    for  page  in  range(pages):
        resp_data = send_request(id,page)   #发送请求
        pares_html(resp_data)   #启动爬虫程序

if __name__ == "__main__":
    id = '10375749'
    pages = 2
    start(id,pages)

爬取网页对应的两页信息(字节跳动公司)
接下来我们还想爬取工作地点以及工作要求的相应内容,通过网页查看相应的标签
工作地点及工作要求
发现职位描述查找对应的信息,职位描述的对应信息在job-desc对应的两个span中,所以用一个数组分别存储两个span的对应内容

import   requests
from  bs4  import  BeautifulSoup    #用于解析和提取数据
def  send_request(id,page):
    url = 'https://www.jobui.com/company/{0}/jobs/p{1}/'.format(id,page)
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}
    resp = requests.get(url,headers = headers)
    print(resp.text)
    #通过resp.text获取服务器返回的数据
    return  resp.text

def  pares_html(html):  #html是从服务器端响应回来的数据(内容)
#BeautifulSoup作用:解析和提取数据,bs的类型为bs4.BeautifulSoup类型,可以使用对象
#中的方法进行数据的提取
    bs = BeautifulSoup(html,'html.parser')  #得到BeautifulSoup的对象
    job_lst = bs.find_all('div',class_='c-job-list')  #得到包含职位的div---15个
    for  item  in  job_lst:     #分别遍历每一个职位数据,每一个item就是一个c-job-list
        name = item.find('h3').text
        #职位名称在h3标签里面,需要查找的是h3标签里面的内容,所以后面要加上text函数
        div_tag = item.find('div',class_='job-desc')
        span_tag = div_tag.find_all('span')
        #有两个对应的span内容,所以分别将其打印出来
        print(name,span_tag[0].text,span_tag[1].text)
    
def  start(id,pages):
    for  page  in  range(pages):
        resp_data = send_request(id,page)   #发送请求
        pares_html(resp_data)   #启动爬虫程序

if __name__ == "__main__":
    id = '10375749'
    pages = 2
    start(id,pages)

具体的要求需要点击对应的链接之后才能看到对应的工作要求以及岗位要求
岗位要求和工作要求职位具体的信息在对应的a标签之中
职位具体的信息这个对应的a标签的特点为class=“job-name”,添加相应的url并打印之后,发现这个为相应的相对链接

import   requests
from  bs4  import  BeautifulSoup    #用于解析和提取数据
def  send_request(id,page):
    url = 'https://www.jobui.com/company/{0}/jobs/p{1}/'.format(id,page)
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}
    resp = requests.get(url,headers = headers)
    print(resp.text)
    #通过resp.text获取服务器返回的数据
    return  resp.text

def  pares_html(html):  #html是从服务器端响应回来的数据(内容)
#BeautifulSoup作用:解析和提取数据,bs的类型为bs4.BeautifulSoup类型,可以使用对象
#中的方法进行数据的提取
    bs = BeautifulSoup(html,'html.parser')  #得到BeautifulSoup的对象
    job_lst = bs.find_all('div',class_='c-job-list')  #得到包含职位的div---15个
    for  item  in  job_lst:     #分别遍历每一个职位数据,每一个item就是一个c-job-list
        name = item.find('h3').text
        #职位名称在h3标签里面,需要查找的是h3标签里面的内容,所以后面要加上text函数
        div_tag = item.find('div',class_='job-desc')
        span_tag = div_tag.find_all('span')
        #有两个对应的span内容,所以分别将其打印出来
        url = item.find('a',class_ = 'job-name')['href']  #提取class样式为job-name的a标签,获取属性为href的值
        print(name,span_tag[0].text,span_tag[1].text,url)
    
def  start(id,pages):
    for  page  in  range(pages):
        resp_data = send_request(id,page)   #发送请求
        pares_html(resp_data)   #启动爬虫程序

if __name__ == "__main__":
    id = '10375749'
    pages = 2
    start(id,pages)

这个对应的a标签的特点为class=“job-name”,添加相应的url并打印之后,发现这个为相应的相对链接
显示的内容为相对链接此时需要使用字符串的拼接,把它拼接成为一个完整的内容

import   requests
from  bs4  import  BeautifulSoup    #用于解析和提取数据
def  send_request(id,page):
    url = 'https://www.jobui.com/company/{0}/jobs/p{1}/'.format(id,page)
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}
    resp = requests.get(url,headers = headers)
    print(resp.text)
    #通过resp.text获取服务器返回的数据
    return  resp.text

def  pares_html(html):  #html是从服务器端响应回来的数据(内容)
#BeautifulSoup作用:解析和提取数据,bs的类型为bs4.BeautifulSoup类型,可以使用对象
#中的方法进行数据的提取
    bs = BeautifulSoup(html,'html.parser')  #得到BeautifulSoup的对象
    job_lst = bs.find_all('div',class_='c-job-list')  #得到包含职位的div---15个
    for  item  in  job_lst:     #分别遍历每一个职位数据,每一个item就是一个c-job-list
        name = item.find('h3').text
        #职位名称在h3标签里面,需要查找的是h3标签里面的内容,所以后面要加上text函数
        div_tag = item.find('div',class_='job-desc')
        span_tag = div_tag.find_all('span')
        #有两个对应的span内容,所以分别将其打印出来
        url = item.find('a',class_ = 'job-name')['href']  #提取class样式为job-name的a标签,获取属性为href的值
        print(name,span_tag[0].text,span_tag[1].text,'https://www.jobui.com'+url)
#剩下的就是来做数据的保存
def  start(id,pages):
    for  page  in  range(pages):
        resp_data = send_request(id,page)   #发送请求
        pares_html(resp_data)   #启动爬虫程序

if __name__ == "__main__":
    id = '10375749'
    pages = 2
    start(id,pages)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值