爬取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