爬取58同城职位信息的流程

首先,让我们来了解一下爬取58同城职位信息的整体流程。下面是一个表格,展示了这个流程的各个步骤。

步骤 描述
1 发送HTTP请求,获取网页源代码
2 解析网页源代码,提取职位信息
3 存储职位信息

接下来,我将逐步解释每个步骤需要做什么,并提供相应的代码示例。

第一步:发送HTTP请求,获取网页源代码

在Python中,我们可以使用requests库来发送HTTP请求,获取网页源代码。下面是相应的代码:

import requests

url = '
response = requests.get(url)
html = response.text

首先,我们导入了requests库。然后,我们定义了要访问的URL,并使用get方法发送了一个GET请求。接着,我们将服务器返回的响应保存在response变量中。最后,我们使用text属性获取了网页的源代码,并将其保存在html变量中。

第二步:解析网页源代码,提取职位信息

在Python中,我们可以使用BeautifulSoup库来解析网页源代码,提取所需的职位信息。下面是相应的代码:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
job_list = soup.find_all('li', class_='job_item')

for job in job_list:
    title = job.find('div', class_='job_name').text
    company = job.find('div', class_='comp_name').text
    salary = job.find('span', class_='money').text

    print('职位:', title)
    print('公司:', company)
    print('薪资:', salary)
    print('---')

首先,我们导入了BeautifulSoup库。然后,我们创建了一个BeautifulSoup对象,将网页的源代码和解析器类型传递给它。接着,我们使用find_all方法找到所有的职位信息,并将它们保存在job_list列表中。

接下来,我们使用find方法分别查找职位的标题、公司和薪资,并使用text属性获取它们的文本内容。最后,我们通过循环遍历job_list列表,并打印出每个职位的标题、公司和薪资。

第三步:存储职位信息

在Python中,我们可以使用csv库来将职位信息存储到CSV文件中。下面是相应的代码:

import csv

with open('jobs.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['职位', '公司', '薪资'])

    for job in job_list:
        title = job.find('div', class_='job_name').text
        company = job.find('div', class_='comp_name').text
        salary = job.find('span', class_='money').text

        writer.writerow([title, company, salary])

首先,我们导入了csv库。然后,我们使用open函数创建了一个名为jobs.csv的CSV文件,并指定了写入模式、换行符和编码格式。接着,我们创建了一个csv.writer对象,并使用writerow方法写入CSV文件的表头。

接下来,我们通过循环遍历job_list列表,并使用find方法获取职位的标题、公司和薪资。最后,我们使用writerow方法将这些信息写入CSV文件。

整体代码

综合以上三个步骤,我们可以得到完整的代码如下:

import requests
from bs4 import BeautifulSoup
import csv

url = '
response = requests.get(url)
html = response.text

soup = BeautifulSoup(html, 'html.parser')
job_list = soup.find_all('li', class_='job_item')

with open('jobs.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['职位', '公司', '薪资'])

    for job in job_list:
        title = job.find('div', class_='job_name').text
        company