如何爬取https://www.learning.mil.cn/course/search/的数据详细步骤
时间: 2023-08-25 19:07:32 浏览: 172
下面是具体的步骤:
1. 安装所需的库
爬虫需要使用requests和BeautifulSoup库,可以使用pip安装。在命令行中输入以下命令:
```
pip install requests
pip install beautifulsoup4
```
2. 发送HTTP请求获取网页源代码
使用requests库发送HTTP请求,获取网页源代码。代码如下:
```python
import requests
url = 'https://www.learning.mil.cn/course/search/'
response = requests.get(url)
html = response.text
```
这里以GET请求为例,获取https://www.learning.mil.cn/course/search/页面的源代码。获取到的源代码存储在html变量中。
3. 解析网页源代码
使用BeautifulSoup库解析网页源代码。代码如下:
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
```
这里使用html.parser解析器解析网页源代码。解析后的结果存储在soup变量中。
4. 定位需要爬取的数据所在的标签和属性
使用Chrome开发者工具或其他工具分析网页源代码,找到需要爬取的数据所在的标签和属性。
在这个网页中,每个课程的名称和链接都包含在一个li标签中,这个li标签又包含在一个ul标签中,ul标签的class属性为course_list。因此,我们可以使用find_all方法遍历所有的li标签,然后再获取每个标签中的名称和链接。
代码如下:
```python
course_list = soup.find('ul', class_='course_list')
for course in course_list.find_all('li'):
name = course.find('a')['title']
link = course.find('a')['href']
print(name, link)
```
这段代码首先找到包含课程信息的ul标签,然后遍历所有的li标签,取出每个li标签中的名称和链接。
5. 整理数据
获取到的数据可能需要进行整理和清洗。例如,如果需要将数据存储到数据库中,我们可以将每个课程的名称和链接封装成一个字典,然后将多个字典存储到一个列表中。代码如下:
```python
courses = []
course_list = soup.find('ul', class_='course_list')
for course in course_list.find_all('li'):
name = course.find('a')['title']
link = course.find('a')['href']
courses.append({'name': name, 'link': link})
```
这段代码首先定义一个空的列表courses,然后遍历所有的li标签,将每个课程的名称和链接封装成一个字典,再将这个字典添加到courses列表中。
6. 存储数据
获取到数据后,可以将数据存储到本地文件或数据库中。例如,可以将数据存储到CSV文件中。代码如下:
```python
import csv
with open('courses.csv', 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['名称', '链接'])
for course in courses:
writer.writerow([course['name'], course['link']])
```
这段代码首先打开一个CSV文件,然后使用csv.writer对象将数据写入到文件中。由于CSV文件是以逗号分隔的文本文件,因此需要指定编码和换行符。在这个例子中,我们将数据写入到courses.csv文件中,并指定编码为UTF-8,换行符为空。
综上所述,这就是爬取https://www.learning.mil.cn/course/search/数据的详细步骤。
阅读全文