本文将从多个方面详细阐述Python网络爬虫课程的相关内容。
一、爬取网页数据
1、使用库:在Python中,我们可以使用第三方库,如BeautifulSoup、Scrapy等,来方便地爬取网页数据。下面是一个使用BeautifulSoup库爬取网页数据的示例:
import requests
from bs4 import BeautifulSoup
# 发送GET请求
response = requests.get("http://example.com")
# 使用BeautifulSoup解析网页数据
soup = BeautifulSoup(response.content, "html.parser")
# 查找指定标签
title = soup.find("title")
print(title.text)
2、实战案例:通过爬取网页数据,我们可以实现许多实用的功能,比如爬取新闻、获取商品信息等。下面是一个实战案例,通过爬取豆瓣电影Top250的数据,获取电影的名称和评分:
import requests
from bs4 import BeautifulSoup
# 发送GET请求
response = requests.get("https://movie.douban.com/top250")
# 使用BeautifulSoup解析网页数据
soup = BeautifulSoup(response.content, "html.parser")
# 查找电影名称和评分
movies = soup.find_all("div", class_="info")
for movie in movies:
name = movie.find("span", class_="title").text
rating = movie.find("span", class_="rating_num").text
print(f"电影名称:{name}t评分:{rating}")
二、处理请求和响应
1、发送POST请求:除了发送GET请求外,我们还可以发送POST请求来提交表单数据或者登录网站。下面是一个使用requests库发送POST请求的示例:
import requests
# POST请求的参数
data = {
"username": "admin",
"password": "123456"
}
# 发送POST请求
response = requests.post("http://example.com/login", data=data)
# 获取响应内容
print(response.text)
2、设置请求头:有时候,网站会对爬虫进行限制,我们需要设置请求头来模拟浏览器的请求。下面是一个设置请求头的示例:
import requests
# 设置请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}
# 发送GET请求并设置请求头
response = requests.get("http://example.com", headers=headers)
# 获取响应内容
print(response.text)
三、数据存储和分析
1、存储为本地文件:爬取的数据可以存储为本地文件,方便后续处理和分析。下面是一个将数据存储为CSV文件的示例:
import csv
# 要存储的数据
data = [
["电影名称", "评分"],
["肖申克的救赎", "9.6"],
["霸王别姬", "9.6"],
["这个杀手不太冷", "9.4"]
]
# 写入CSV文件
with open("movies.csv", "w", encoding="utf-8", newline="") as file:
writer = csv.writer(file)
writer.writerows(data)
2、数据分析:使用Python的数据分析库,如pandas、numpy等,可以对爬取的数据进行分析和可视化。下面是一个使用pandas库对CSV文件中的数据进行分析的示例:
import pandas as pd
# 读取CSV文件
data = pd.read_csv("movies.csv")
# 查看数据
print(data.head())
# 计算评分的平均值
avg_rating = data["评分"].mean()
print(f"平均评分:{avg_rating}")
通过以上的示例,我们可以看到Python网络爬虫课程涉及到爬取网页数据、处理请求和响应、数据存储和分析等多个方面,希望能给你带来帮助!