使用Python自动化selenium爬取各个地区招聘上的职位信息保存到csv文件

使用Python自动化爬取各个地区招聘上的职位信息保存到csv文件

首先上一下我亲自写的这个爬取需求的完整代码案例,链接如下,希望能帮到有这方面需求的铁铁哦
https://download.csdn.net/download/qq_22593423/88017045

为了实现从无到有的这份代码编写过程,将分为以下几个步骤:

1. 导入所需模块

首先,我们需要导入一些必要的Python模块,包括以下内容:

from bs4 import BeautifulSoup
from time import sleep
import random
import csv
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
  • BeautifulSoup用于解析HTML页面。
  • sleep函数用于等待一定的时间,模拟人工操作的延迟。
  • random模块用于生成随机数。
  • csv模块用于将提取的数据写入CSV文件。
  • selenium模块用于自动化网页操作,包括打开网页、获取网页内容等。

2. 定义需要爬取的网页URL和数据存储文件

sections = ['101010100', ]
sections1 = ['AI', '数据分析', 'BI', 'ETL', '数据挖掘', '模型']

base_url = 'https://www.zhipin.com/web/geek/job?'
csv_file = open('jobs.csv', mode='a', newline='', encoding='utf-8')
writer = csv.writer(csv_file)
writer.writerow(['职位名称', '地区', '薪水', '标签', '能力要求', '公司名字', '福利待遇', '详情链接'])
  • sectionssections1是要爬取的职位类别和地区列表。
  • base_url是招聘网站的基础URL。
  • csv_file是用于存储数据的CSV文件对象。
  • writer是用于写入CSV文件的Writer对象。
  • writer.writerow()用于写入CSV文件的表头信息。

3. 遍历职位类别和地区进行页面爬取

for section in sections:
    for section1 in sections1:
        page_list = list(range(1, 10))
        random.shuffle(page_list)
        for page in page_list:
            # 创建一个代理IP实例
            proxy = Proxy()
            proxy.proxy_type = ProxyType.MANUAL
            proxy.http_proxy = getProxyIP()  # 替换为真实的代理IP和端口

            # 将代理IP应用于浏览器实例
            capabilities = webdriver.DesiredCapabilities.CHROME
            proxy.add_to_capabilities(capabilities)

            # 定义 Chrome 浏览器实例
            browser = webdriver.Chrome(desired_capabilities=capabilities)

            # 将窗口设置为全屏
            browser.maximize_window()

            url = f'{base_url}query={section1}&city={section}&page={page}'
            print(f'开始爬了,{url}...')
            browser.get(url)  # 注意这里是url,而不是"url"

            # 设置随机等待时间
            wait_time = random.randint(25, 40)  # 随机等待5~15秒
            sleep(wait_time)

            wait = WebDriverWait(browser, 90)
            element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'job-list-box')))

            # 爬取网页内容
            content = browser.page_source
            soup = BeautifulSoup(content, 'html.parser')
            li_tags = soup.select('.job-list-box .job-card-wrapper')

            # 提取岗位信息并写入CSV文件
            for li in li_tags:
                job_name = li.find('span', class_='job-name').text.strip()
                job_area = li.find('span', class_='job-area').text.strip()
                salary = li.find('span', class_='salary').text.strip()

                tag_list1 = li.find('ul', class_='tag-list').find_all('li')
                tags1 = ', '.join([tag1.text.replace('"', '') for tag1 in tag_list1])

                tag_list = li.find('div', class_='job-card-footer').find('ul', class_='tag-list').find_all('li')
                tags = ', '.join([tag.text.replace('"', '').replace("'", '') for tag in tag_list])

                company_name = li.find('h3', class_='company-name').text.strip()
                company_welfare = li.find('div', class_='info-desc').text.strip()

                detail_link = 'https://www.zhipin.com' + li.find('a', class_='job-card-left')['href']

                writer.writerow([job_name, job_area, salary, tags1, tags, company_name, company_welfare, detail_link])

            # 设置随机等待时间
            wait_time = random.randint(25, 40)  # 随机等待5~15秒
            sleep(wait_time)
            browser.quit()

csv_file.close()
  • 在双重循环中,我们根据职位类别和地区生成要爬取的URL链接。
  • 接着,我们创建了一个代理IP实例,并将其应用于浏览器实例,以便实现IP代理访问网页。
  • 然后,我们打开了浏览器,并使用browser.get(url)方法打开指定的URL链接。
  • 在打开网页后,我们使用sleep()函数模拟等待一定的时间,以确保页面加载完毕。
  • 接下来,使用beautifulsoup库解析网页内容,提取出需要的职位信息,并将其写入CSV文件中。
  • 最后,我们再次设置随机等待时间,并使用seleniumquit()方法关闭浏览器。

4. 完成代码并保存结果

最后,我们关闭CSV文件,并完成代码的编写。

csv_file.close()

以上就是从无到有的代码编写过程的详细叙述。该代码实现了爬取招聘网站上的职位信息,并将提取的数据存储到CSV文件中。你可以根据自己的需求进行修改和优化。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹山全栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值