抓取boss直聘的信息

from bs4 import BeautifulSoup
import requests
import ip_proxy
from urllib import parse

headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36’,
}

def get_boss_info(my_ip,detailed_url):
#url = ‘https://www.zhipin.com/job_detail/7e883f0c3a336cb51n142968FFM~.html?ka=search_list_1

proxy = {
    'http': 'http://' + my_ip.ip_proxy_str,
    'https': 'http://' + my_ip.ip_proxy_str
}
response = requests.get(detailed_url, headers=headers, proxies = proxy, timeout=5)

soup = BeautifulSoup(response.text, 'lxml')
title = soup.find('h1').text
#div_ele = soup.find('div', class_="name")
#print(div_ele)
salary = soup.find('span', class_="badge").text.replace('\n', '').strip()
print(title)
print(salary)
gezhong_info = soup.select('div.info-primary > p')[0].text.replace('\n', '').strip()
print(gezhong_info)
gangwei_info = soup.select('div.text')[0].text
print(gangwei_info)

def get_detail_url(my_ip, url):# 获取详情页的url
# url = ‘https://www.zhipin.com/c101010100/h_101010100/?query=python&page=2&ka=page-2
proxy = {
‘http’: ‘http://’ + my_ip.ip_proxy_str,
‘https’: ‘http://’ + my_ip.ip_proxy_str
}
response = requests.get(url, headers = headers, proxies=proxy, timeout=5)

soup = BeautifulSoup(response.text, 'lxml')
#a_ele_list = soup.select('h3.name > a')
a_ele_list = soup.select('div.job-list > ul > li div.info-primary > h3 > a')

for a_ele in a_ele_list:
    # 属性值的获取可以通过类似字典的方式获取
    a_href = a_ele['href']
    # 拼接详情页的链接
    href = parse.urljoin(url, a_href)
    print('详情页的href: ' + href)
    # 重试三次, 获取代理访问boss直聘, 三次没有成功访问就跳过
    for i in range(0,3):
        try:
            # 获取详情页的信息
            get_boss_info(my_ip, href)
            break
        except Exception as e:
            print(e)
            my_ip.update_ip_proxy_str()

def get_all_info(my_ip):
base_url = ‘https://www.zhipin.com/c101010100/h_101010100/?query=python&page=%s&ka=page-%s
for i in range(1,4):
# 每一个分页的url
url = base_url % (i, i)
# 循环处理, 如果proxy不好使, 就需要换代理, 如果重试4次依然不好使,就跳过
for i in range(0, 4):
try:
# 循环四次访问boss直聘的网站, 分页的内容
# get_detail_url(my_ip, url)
get_detail_url(my_ip, url)
break
except Exception as e:
print(e)
my_ip.update_ip_proxy_str()

if name == ‘main‘:
my_ip = ip_proxy.ip_getter()
# 获取一个ip
# proxy_str = ‘36.27.143.72:21450’
# print(proxy_str)
# 获取所有的boss直聘信息
get_all_info(my_ip)

好的,我了解你的问题了。这是一个非常实用的问题,下面我将为你详细介绍Python爬取boss直聘招聘信息的实现方法。 首先,我们需要准备以下工具和库: - Python 3.6 或以上版本 - requests 库 - BeautifulSoup 库 - pandas 库 接下来,我们按照以下步骤进行实现: 1. 导入需要的库: ```python import requests from bs4 import BeautifulSoup import pandas as pd ``` 2. 定义一个函数,用于获取页面内容: ```python def get_page(url): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') return soup ``` 3. 定义一个函数,用于获取职位信息: ```python def get_jobs(soup): job_list = [] jobs = soup.select('.job-list ul li .job-primary .info-primary') for job in jobs: job_name = job.select('.job-title')[0].text.strip() company_name = job.select('.company-text .name')[0].text.strip() salary = job.select('.job-limit .red')[0].text.strip() job_info = job.select('.job-title')[0].attrs['href'] job_detail = get_job_detail(job_info) job_list.append([job_name, company_name, salary, job_detail]) return job_list ``` 4. 定义一个函数,用于获取职位的详细信息: ```python def get_job_detail(url): soup = get_page(url) job_detail = soup.select('.job-detail .job-sec')[0].text.strip().replace('\n', '') return job_detail ``` 5. 定义一个函数,用于保存数据到本地CSV文件: ```python def save_to_csv(job_list): df = pd.DataFrame(job_list, columns=['职位名称', '公司名称', '薪资待遇', '职位描述']) df.to_csv('boss直聘招聘信息.csv', index=False) ``` 6. 最后,我们编写主程序: ```python if __name__ == '__main__': url = 'https://www.zhipin.com/c101280100/?query=python&page=1' soup = get_page(url) job_list = get_jobs(soup) save_to_csv(job_list) ``` 在运行程序之前,我们需要先确定爬取的页面URL和参数。在本例中,我们爬取的是boss直聘上“python”职位的招聘信息,因此URL为“https://www.zhipin.com/c101280100/?query=python&page=1”,其中“c101280100”是城市代码,这里是上海的城市代码,可以根据需要修改。在“query”参数中输入关键词“python”,“page”参数表示页码。 运行程序后,会将爬取到的职位信息保存到本地的CSV文件中,文件名为“boss直聘招聘信息.csv”。 以上就是Python爬取boss直聘招聘信息的实现方法,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值