荒野行动wiki手游
1.98 GB · 2025-11-15
requests 是 Python 最常用的网络请求库,使用起来非常简洁。
import requests
url = "https://quotes.toscrape.com/"
response = requests.get(url)
print(response.status_code)
print(response.text[:500]) # 只看前500个字符
说明:
status_code = 200 表示请求成功。response.text 为网页 HTML 内容。BeautifulSoup 是一个非常强大的 HTML 解析工具,可帮助你方便地提取网页结构中的特定内容。
from bs4 import BeautifulSoup
html = response.text
soup = BeautifulSoup(html, "html.parser")
quotes = soup.find_all("div", class_="quote")
for q in quotes:
text = q.find("span", class_="text").get_text(strip=True)
author = q.find("small", class_="author").get_text(strip=True)
print(f"{author}:{text}")
输出示例:
Albert Einstein:“The world as we have created it is a process of our thinking.”
J.K. Rowling:“It is our choices that show what we truly are.”
我们可以将提取的数据保存到列表中,再用 pandas 转换成表格格式,最后导出 Excel/CSV 文件。
import pandas as pd
data = []
for q in quotes:
text = q.find("span", class_="text").get_text(strip=True)
author = q.find("small", class_="author").get_text(strip=True)
data.append({"作者": author, "名言": text})
df = pd.DataFrame(data)
df.to_excel("名言收集.xlsx", index=False)
print("数据已保存到 名言收集.xlsx")
很多网站内容分页显示,可以通过分析 URL 规律实现多页爬取。
以 https://quotes.toscrape.com/page/1/ 为例,下一页是 /page/2/、/page/3/...
import time
import random
all_data = []
for page in range(1, 6):
url = f"https://quotes.toscrape.com/page/{page}/"
print(f"正在爬取第 {page} 页:{url}")
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
quotes = soup.find_all("div", class_="quote")
for q in quotes:
text = q.find("span", class_="text").get_text(strip=True)
author = q.find("small", class_="author").get_text(strip=True)
all_data.append({"作者": author, "名言": text})
time.sleep(random.uniform(1, 2)) # 防止请求过快被封
# 保存数据
df = pd.DataFrame(all_data)
df.to_csv("quotes.csv", index=False, encoding="utf-8-sig")
print("所有页面数据已保存到 quotes.csv")
爬取到的数据可能存在重复或空行,可用 Pandas 简单清洗:
df = pd.read_csv("quotes.csv")
df.drop_duplicates(inplace=True)
df.dropna(subset=["名言"], inplace=True)
df.to_csv("quotes_clean.csv", index=False, encoding="utf-8-sig")
print("清洗完成,保存为 quotes_clean.csv")
以某新闻网站为例(如新浪科技频道):
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://tech.sina.com.cn/"
response = requests.get(url)
response.encoding = "utf-8"
soup = BeautifulSoup(response.text, "html.parser")
titles = [a.get_text(strip=True) for a in soup.find_all("a") if a.get_text(strip=True)]
data = pd.DataFrame({"新闻标题": titles})
data.to_excel("新浪科技新闻.xlsx", index=False)
print("新闻标题已保存到 新浪科技新闻.xlsx")
为了避免被网站屏蔽,建议:
设置请求头(User-Agent)
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
requests.get(url, headers=headers)
控制访问频率
使用 time.sleep() 随机等待 1~3 秒。
捕获网络异常
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
except requests.RequestException as e:
print("请求失败:", e)
| 步骤 | 工具 | 功能 |
|---|---|---|
| 1 | requests | 获取网页 HTML |
| 2 | BeautifulSoup | 解析 HTML 提取数据 |
| 3 | pandas | 存储与清洗数据 |
| 4 | Excel/CSV | 数据落地保存 |
| 5 | time + random | 防止请求过快被封禁 |
通过以上流程,你已经可以实现一个完整的网页爬取与数据存储脚本,为后续数据分析和可视化打下基础。