网络爬虫——爬取boss直聘招聘信息

这是一个爬取boss直聘招聘信息的代码。

Selenium 是一个广泛使用的 Python 抓取库,用于抓取动态 Web 内容。它通过单击按钮、填写表格等来模仿人类交互。

Selenium 与许多浏览器兼容,例如 Chrome 和 Firefox,允许您选择最适合您的网络抓取项目的浏览器。这种灵活性有助于确保在不同的浏览器环境中获得一致的结果。

👍 优点: 它可以抓取动态网页。多浏览器支持。

👎 缺点:Selenium可能很慢。它无法获取状态代码。这既费时又费力。

---------代码-----------

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
from selenium.webdriver.chrome.service import Service  
from selenium import webdriver  
from selenium.webdriver.edge.service import Service  
from webdriver_manager.microsoft import EdgeChromiumDriverManager 
from urllib.parse import quote  
# 打开CSV文件
f = open('/boss-beijing-数字化产业_广州.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.writer(f)
csv_writer.writerow(['岗位名称', '薪资待遇', '岗位详情', '岗位地区', '公司福利', '公司名称', '公司规模', '岗位需要技能', '岗位详情链接'])

# 打开浏览器
service = Service(EdgeChromiumDriverManager().install())  
driver = webdriver.Edge(service=service) 
# driver = webdriver.Edge()  # 使用Edge浏览器
# driver = webdriver.Chrome()  # 如果使用Chrome浏览器可以替换这一行
positions = [  
    '101301', '101302', '100120', '100117', '101310',  
    '100104', '130121', '100511', '100514', '100122',  
    '100508', '100515', '100507', '100506', '100512' ]  

pages = range(1, 11) 

try:  
    # 对每个position,遍历页面范围  
    for position in positions:  
        for page in pages:  
            # 2. 打开一个网址  
            url = r'https://www.zhipin.com/web/geek/job?city=101280100&position={}&page={}'.format(position, page) 
            driver.get(url) 
            print(url)
        # 等待10秒(注意:这里使用 implicitly_wait 可能不是最佳实践,考虑使用 WebDriverWait)  
            driver.implicitly_wait(10)  
  
        # 3. 获取数据 定位数据  
            lis = driver.find_elements(By.CSS_SELECTOR, '.job-card-wrapper')  
  
        # 二次提取岗位具体信息,将符合公司和岗位名称条件的保存在csv中  
            for li in lis:  
                job_name = li.find_element(By.CSS_SELECTOR, '.job-name').text  
                salary = li.find_element(By.CSS_SELECTOR, '.salary').text  
                tag_list = li.find_element(By.CSS_SELECTOR, '.tag-list').text  
                job_area = li.find_element(By.CSS_SELECTOR, '.job-area').text  
                info_desc = li.find_element(By.CSS_SELECTOR, '.info-desc').text  
                company_name = li.find_element(By.CSS_SELECTOR, '.company-name').text  
                company_tag_list = li.find_element(By.CSS_SELECTOR, '.company-tag-list').text if li.find_elements(By.CSS_SELECTOR, '.company-tag-list') else ''  
                job_need = li.find_element(By.CSS_SELECTOR, '.job-card-footer.clearfix ul').text.split('|')  
                job_url = li.find_element(By.CSS_SELECTOR, '.job-card-body.clearfix a').get_attribute('href') 
            # 如果公司名称包含在目标公司列表中,保存数据
                csv_writer.writerow([job_name, salary, tag_list, job_area, info_desc, company_name, company_tag_list, job_need, job_url])

finally:
    # 关闭浏览器
    driver.quit()

    # 关闭CSV文件
    f.close()

好的,我们可以使用 Python 中的 requests 库和 BeautifulSoup 库来爬取 BOSS 直聘的招聘数据。 首先,我们需要打开 BOSS 直聘的网站,搜索我们需要的职位,并复制浏览器地址栏中的链接,作为我们爬取的 URL。 接下来,我们可以使用 requests 库向该 URL 发送请求,并使用 BeautifulSoup 库解析 HTML 文档,提取我们需要的招聘信息。 以下是示例代码: ```python import requests from bs4 import BeautifulSoup url = 'https://www.zhipin.com/job_detail/?query=python&city=101010100&industry=&position=' 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') job_list = soup.find('div', class_='job-list').find_all('li') for job in job_list: job_name = job.find('div', class_='job-title').text.strip() company_name = job.find('div', class_='company-text').find('h3').text.strip() salary = job.find('span', class_='red').text.strip() print(job_name, company_name, salary) ``` 在上述代码中,我们首先定义了我们需要爬取的 URL,以及请求头 headers。然后,我们使用 requests 库向该 URL 发送请求,并使用 BeautifulSoup 库解析 HTML 文档。 在解析 HTML 文档后,我们使用 find() 方法找到 class 为 job-list 的 div 标签,并使用 find_all() 方法找到其下所有的 li 标签,即每个招聘信息。 接下来,我们使用 find() 方法分别找到每个招聘信息的职位名称、公司名称和薪资,并使用 strip() 方法去除空格和换行符。 最后,我们将这些信息打印出来,即可得到我们需要的招聘数据。 需要注意的是,BOSS 直聘的网页结构可能会有所变化,上述代码仅供参考。另外,爬取网页数据需要遵守相关法律法规,不得用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值