Python爬虫实战:利用代理IP获取招聘网站信息(手把手教学)

文章目录

    • 一、为什么要用代理IP?(生存必备技能!)
    • 二、准备工作(别偷懒!)
      • 2.1 装环境(Python老司机跳过)
      • 2.2 代理IP来源(三种姿势任选)
    • 三、实战代码(直接抄作业!)
    • 四、避坑指南(血泪经验)
      • 4.1 代理IP失效怎么办?
      • 4.2 遇到验证码怎么破?
    • 五、法律红线(必看!)
    • 六、升级玩法(老司机专属)
    • 七、总结

一、为什么要用代理IP?(生存必备技能!)

最近帮朋友做招聘数据分析时(说多了都是泪),发现主流招聘平台的反爬机制简直丧心病狂!连续访问20次就会被封IP(亲测5分钟解封都是骗人的)…这时候就需要祭出我们的生存神器——代理IP!

举个栗子:假设你要批量爬取1000个岗位信息,不用代理IP的话,你的爬虫生涯可能在第21次请求时就Game Over了!

二、准备工作(别偷懒!)

2.1 装环境(Python老司机跳过)

pip install requests beautifulsoup4 fake-useragent

2.2 代理IP来源(三种姿势任选)

  1. 付费代理服务(推荐亮数据/青果代理)
  2. 免费代理网站(时效短但应急可用)
  3. 自建代理池(适合长期需求)

(重要!)这里我用的是亮数据的住宅代理,配置参数长这样:

proxies = {
    'http': 'http://用户名:密码@gateway.xxxx.com:端口',
    'https': 'http://用户名:密码@gateway.xxxx.com:端口'
}

三、实战代码(直接抄作业!)

import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

# 伪装浏览器(反爬第一关)
headers = {
    'User-Agent': UserAgent().random
}

# 代理配置(生存关键!)
proxies = {
    'http': 'http://你的代理配置',
    'https': 'http://你的代理配置'
}

def get_job_info(keyword):
    try:
        # 以某联招聘为例(其他平台自行替换URL)
        url = f'https://www.zhaopin.com/{keyword}/'
        
        # 发起带代理的请求(核心代码!)
        response = requests.get(url, headers=headers, proxies=proxies, timeout=10)
        
        # 状态码检测(别当瞎子!)
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'lxml')
            
            # 定位岗位信息(开发者工具大法好)
            jobs = soup.select('.job-list li')
            
            for job in jobs:
                title = job.select_one('.job-title').text.strip()
                company = job.select_one('.company-name').text.strip()
                salary = job.select_one('.salary').text.strip()
                
                print(f'岗位:{title}\n公司:{company}\n薪资:{salary}\n{"-"*30}')
                
        else:
            print(f'请求失败,状态码:{response.status_code}')
            
    except Exception as e:
        print(f'发生错误:{str(e)}')

if __name__ == '__main__':
    get_job_info('python开发')

四、避坑指南(血泪经验)

4.1 代理IP失效怎么办?

  • 设置自动切换代理的中间件
  • 使用代理IP池随机轮换
  • 捕获ProxyError异常并重试
from requests.exceptions import ProxyError

# 在try块中添加
except ProxyError:
    print('代理连接失败,正在切换IP...')
    # 这里调用更换代理的方法

4.2 遇到验证码怎么破?

  • 降低请求频率(加随机延时)
  • 使用selenium模拟人工操作
  • 接入打码平台(成本警告!)
import time
import random

# 在请求前添加
time.sleep(random.uniform(1, 3))  # 随机等待1-3秒

五、法律红线(必看!)

根据《数据安全法》第二十七条:

任何个人和组织都不得从事危害网络安全的活动!(超凶.jpg)

操作时务必:

  1. 遵守robots.txt协议
  2. 限制爬取速度
  3. 不爬取敏感信息
  4. 不进行商业牟利

六、升级玩法(老司机专属)

把爬取的数据用于:

  • 自动生成岗位分析报告
  • 训练面试AI助手
  • 制作薪资热力图
  • 监测行业人才需求变化

(悄悄说)我之前用这些数据做了个「Python岗位技能词云」,发现Django和Flask的出现频率比FastAPI高3倍!

七、总结

记住代理IP爬虫的黄金三原则:

  1. 伪装要到位(UA+IP+行为)
  2. 节奏要自然(随机延时+分时段采集)
  3. 数据要脱敏(不存储个人信息)

遇到问题欢迎评论区交流(但别问破解方法!),下期可能会分享如何用Scrapy搭建分布式爬虫系统~

你可能感兴趣的:(python,爬虫,tcp/ip,其他)