杏子和橙子 2024-06-15 21:17 采纳率: 79.2%
浏览 4

数据仓库任务一我就糊涂了

img


需要采取数据

img


而且为了后面的做题,采集的数据必须包含这些城市和这些职位


import requests
from bs4 import BeautifulSoup
import csv
import os

# 模拟请求头
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'
}

# Boss直聘搜索URL (示例)
url = 'https://www.zhipin.com/c101010100/?query=python'

proxies = {
    "http": None,
    "https": None,
}

response = requests.get(url, headers=headers, proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')

# 获取职位信息
jobs = soup.find_all('div', class_='job-primary')

job_list = []

for job in jobs:
    title = job.find('div', class_='job-title').text
    company = job.find('div', class_='company-text').text.strip()
    salary = job.find('span', class_='red').text
    location = job.find('span', class_='job-area').text
    job_list.append([title, company, salary, location])

# 保存到本地CSV文件
file_path = 'jobs.csv'
with open(file_path, 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['Title', 'Company', 'Salary', 'Location'])
    writer.writerows(job_list)

print(f"Data saved to {file_path}")

这段代码始终报错requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.zhipin.com', port=443): Max retries exceeded with url: /web/common/security-check.html?seed=fXtv3Wx5EcKOfCsStJTXhP%2BsoJGhSDCga0c5cJsZ3XM%3D&name=c71cff0c&ts=1718454925401&callbackUrl=%2Fc101010100%2F%3Fquery%3Dpython&srcReferer= (Caused by ProxyError('Unable to connect to proxy', OSError(0, 'Error')))
无论我如何修改

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-15 21:17
    关注

    引自免费微信小程序:皆我百晓生

    面对你遇到的问题,让我们一起分析并解决它。错误信息表明在尝试通过代理访问www.zhipin.com时出现了连接失败的情况。这可能是由于代理设置不正确或代理服务器本身存在问题导致的。

    首先,检查你的代理配置是否正确。在你的代码中,代理被设置为None,这意味着默认情况下不会使用任何代理。如果你确实需要使用代理,确保提供正确的代理服务器地址和端口,例如:

    proxies = {
        "http": "http://your-proxy-server:port",
        "https": "https://your-proxy-server:port",
    }
    

    如果你不需要使用代理,可以简单地删除proxies参数,这样requests.get()将直接尝试连接目标网站而不会使用代理。

    此外,Boss直聘可能实施了反爬虫措施,包括但不限于IP封禁、验证码要求等。为了避免这些问题,可以考虑以下策略:

    1. 使用更复杂的User-Agent:有些网站会根据User-Agent判断请求来源,更改User-Agent可能有助于绕过一些基本的反爬虫机制。
    2. 添加延迟:在请求之间增加延迟,避免过于频繁的请求被识别为爬虫行为。
    3. 使用代理池:如果使用代理,建议使用代理池来轮流使用不同的代理,降低单个IP被封的风险。

    下面是一个改进后的代码示例,去除了代理设置,并增加了随机User-Agent和请求之间的延迟:

    import requests
    from bs4 import BeautifulSoup
    import csv
    import random
    import time
    
    # 随机User-Agent列表
    user_agents = [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
        # 更多User-Agent...
    ]
    
    # Boss直聘搜索URL (示例)
    url = 'https://www.zhipin.com/c101010100/?query=python'
    
    headers = {
        'User-Agent': random.choice(user_agents),  # 随机选择一个User-Agent
    }
    
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 获取职位信息
    jobs = soup.find_all('div', class_='job-primary')
    
    job_list = []
    
    for job in jobs:
        title = job.find('div', class_='job-title').text
        company = job.find('div', class_='company-text').text.strip()
        salary = job.find('span', class_='red').text
        location = job.find('span', class_='job-area').text
        job_list.append([title, company, salary, location])
        time.sleep(random.uniform(1, 3))  # 在每个请求后添加随机延迟
    
    # 保存到本地CSV文件
    file_path = 'jobs.csv'
    with open(file_path, 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['Title', 'Company', 'Salary', 'Location'])
        writer.writerows(job_list)
    
    print(f"Data saved to {file_path}")
    

    如果以上方法仍然无法解决问题,可能需要进一步研究Boss直聘的具体反爬虫策略,或者寻找第三方提供的API服务来获取数据,这通常会更加稳定和可靠。不过,使用第三方服务可能涉及到费用或数据使用权限的问题,需谨慎考虑。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月15日

悬赏问题

  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统
  • ¥100 rtmpose姿态评估