利用requests爬取智联相关职位信息

本文介绍如何利用Python的requests库进行网络爬虫,以获取智联招聘网站上的职位详情。通过构建HTTP请求,解析HTML页面,提取关键信息,实现数据抓取和分析。
初步代码
# -*- encoding: utf-8 -*-


from crawl.WebRequest import *
from crawl.mysqldb import SQL
import time, json, random, math, requests, logging, hashlib

# 格式化输出日志
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
logging.basicConfig(filename='zhilian.log', level=logging.INFO, format=LOG_FORMAT, datefmt=DATE_FORMAT)
# 获取请求头
logging.info('begin to get web request header')
# 需要爬取的职位
positions = ['大数据']
# 需要爬取的城市:北京、上海、深圳、广州、成都、杭州、武汉
# city_ids = ['530', '538', '765', '763', '801', '653', '736']
city_ids = ['801']
# 工作经验:无经验、1年以下、1-3年、3-5年、5-10年、10年以上
work_exps = ['0000', '0001', '0103', '0305', '0510', '1099']
# 请求头
header = header()
# 获取代理IP
proxy_list = get_home_proxy()


def main():
    logging.info('begin to sending request')
    sql = SQL()
    latest_jobNums = sql.get_latest_jobNum('zhilian_update')
    for city_id in city_ids:
        for position in positions:
            for work_exp in work_exps:
                base_url = 'https://fe-api.zhaopin.com/c/i/sou?pageSize=90&cityId={cityId}&salary=0,0' \
                           '&workExperience={workExp}&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&sortType=publish' \
                           '&kw={position}&kt=3&=0&_v=' + getParam()[0] + "&x-zp-page-request-id=" + getParam()[1]
                base_url = base_url.format(cityId=city_id, workExp=work_exp, position=position)
          
### 如何使用爬虫抓取智联招聘网站的数据分析职位信息爬取智联招聘网站上的数据分析职位信息时,需要遵循一定的流程和注意事项。以下是实现这一目标的具体方法: #### 1. 分析目标网站的HTML结构 在开始编写爬虫之前,需先了解目标网站(如智联招聘)的HTML结构。通过浏览器开发者工具查看页面源码,定到包含职位名称公司信息、工作地点、薪资等字段的置[^1]。 #### 2. 构建请求头与URL参数 为了模拟真实用户的访问行为,通常需要设置合理的HTTP请求头(Headers),包括User-Agent等字段。此外,还需要构建动态查询参数,例如关键词“数据分析”,以及城市和地区筛选条件[^2]。 ```python import requests from bs4 import BeautifulSoup import pandas as pd headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } base_url = "https://www.zhaopin.com" search_url = f"{base_url}/job_search?kw=数据分析&city=%E5%85%A8%E5%9B%BD&page=" ``` #### 3. 编写爬虫逻辑 利用`requests`库发送GET请求,并解析返回的内容。可以借助BeautifulSoup或其他类似的HTML解析器提取所需的信息。 ```python def fetch_job_listings(page_number): url = search_url + str(page_number) response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') job_items = [] jobs = soup.find_all('div', class_='job-primary') for job in jobs: title_element = job.find('div', class_='job-title') company_element = job.find('h3', class_='name') salary_element = job.find('span', class_='red') if not all([title_element, company_element, salary_element]): continue position_name = title_element.get_text(strip=True) company_name = company_element.get_text(strip=True) salary = salary_element.get_text(strip=True) detail_link = base_url + job.find('a')['href'] job_item = { 'Position Name': position_name, 'Company Name': company_name, 'Salary': salary, 'Detail Link': detail_link } job_items.append(job_item) return job_items ``` #### 4. 数据存储 将收集到的数据保存至CSV文件以便后续处理或可视化分析。 ```python all_jobs = [] for page in range(1, 10): # 假设只爬取10页作为示例 try: current_page_data = fetch_job_listings(page) all_jobs.extend(current_page_data) except Exception as e: print(f"Error occurred on page {page}: {e}") df = pd.DataFrame(all_jobs) output_filename = './zl_全国_数据分析.csv' df.to_csv(output_filename, index=False, encoding='utf-8-sig') print(f"Data saved to {output_filename}") ``` #### 5. 高级功能扩展 如果希望进一步深入挖掘,则可考虑加入更多高级特性,比如对详情链接发起二次请求以获取更详细的职位描述内容[^3]^, 或者应用自然语言处理技术完成文本分类与情感分析等工作[^4]. --- ### 注意事项 - **合法性**:确保遵守目标站点的服务条款及法律法规。 - **频率控制**:适当降低请求频率以免给服务器带来过大负担。 - **反爬机制应对**:某些大型平台可能会部署复杂的防护措施对抗自动化脚本活动,因此建议研究其具体策略后再行动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值