抓取job51上面的关于python职位的职位名称、公司名称、公司链接、工资、工作地点、是否是实习、员工待遇信息并存入数据库
时间: 2023-12-22 12:03:40 浏览: 25
好的,这个任务可以分为以下几步:
1. 确定需要抓取的网址和需要提取的信息;
2. 使用 Python 中的 requests 库请求网页内容;
3. 使用 BeautifulSoup 库解析 HTML 代码,并提取需要的信息;
4. 将提取的信息存入本地数据库中。
下面是具体的实现过程:
1. 首先我们需要打开 job51 的网站,搜索关于 Python 的职位,并复制搜索结果页面的网址。在本例中,我搜索了“Python”并筛选出了“全职”职位,得到的网址为:https://search.51job.com/list/010000,000000,0000,00,9,99,Python,2,1.html。
我们需要提取的信息有职位名称、公司名称、公司链接、工资、工作地点、是否是实习、员工待遇。根据网页结构,我们可以发现这些信息都包含在每个职位信息的一个 div 标签中,该标签的 class 属性为“el”。因此,我们可以通过查找所有 class 为“el”的 div 标签,进一步提取需要的信息。
2. 接下来,我们可以使用 requests 库发送 GET 请求,获取网页内容,并将其作为 BeautifulSoup 的输入。代码如下:
```python
import requests
from bs4 import BeautifulSoup
url = "https://search.51job.com/list/010000,000000,0000,00,9,99,Python,2,1.html"
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
```
3. 接下来,我们需要解析 HTML 代码,并提取需要的信息。根据页面结构,我们可以发现职位名称、公司名称、公司链接、工资、工作地点、是否是实习、员工待遇等信息都包含在每个 class 为“el”的 div 标签中。我们可以使用 find_all() 方法查找所有符合条件的标签,并使用其他方法进一步提取信息。代码如下:
```python
jobs = soup.find_all('div', class_='el')
for job in jobs:
# 获取职位名称
job_name = job.find('a').text.strip()
# 获取公司名称
company_name = job.find('span', class_='t2').text.strip()
# 获取公司链接
company_url = job.find('span', class_='t2').find('a')['href']
# 获取工资
salary = job.find('span', class_='t4').text.strip()
# 获取工作地点
location = job.find('span', class_='t3').text.strip()
# 获取是否是实习
is_intern = job.find('span', class_='t5').text.strip()
# 获取员工待遇
treatment = job.find('span', class_='t6').text.strip()
# 将提取的信息打印出来
print(job_name, company_name, company_url, salary, location, is_intern, treatment)
```
4. 最后,我们需要将提取的信息存入本地数据库中。这里我们可以使用 SQLite 数据库,代码如下:
```python
import sqlite3
# 创建数据库连接并打开游标
conn = sqlite3.connect('job.db')
cursor = conn.cursor()
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS job
(id INTEGER PRIMARY KEY AUTOINCREMENT,
job_name TEXT,
company_name TEXT,
company_url TEXT,
salary TEXT,
location TEXT,
is_intern TEXT,
treatment TEXT)''')
# 插入数据
for job in jobs:
# 获取职位名称
job_name = job.find('a').text.strip()
# 获取公司名称
company_name = job.find('span', class_='t2').text.strip()
# 获取公司链接
company_url = job.find('span', class_='t2').find('a')['href']
# 获取工资
salary = job.find('span', class_='t4').text.strip()
# 获取工作地点
location = job.find('span', class_='t3').text.strip()
# 获取是否是实习
is_intern = job.find('span', class_='t5').text.strip()
# 获取员工待遇
treatment = job.find('span', class_='t6').text.strip()
# 将数据插入表中
cursor.execute("INSERT INTO job (job_name, company_name, company_url, salary, location, is_intern, treatment) \
VALUES (?, ?, ?, ?, ?, ?, ?)", (job_name, company_name, company_url, salary, location, is_intern, treatment))
# 提交并关闭连接
conn.commit()
conn.close()
```
这样,我们就可以完成抓取 job51 上关于 Python 职位的信息,并存入本地数据库的任务了。
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)