python网络爬虫学习
一、理清步骤
1、获取网页内容(比如向浏览器询问请求,浏览器返回经过渲染处理的问题答案,美化页面,使用户清晰明了;而程序向网页发送请求得来的是较为原始的不经加工的纯数据,比较原生裸露庞大碎片复杂)
学习:HTTP请求、python requests、HTML网页解读
HTTP请求:GET请求(获取数据,爬虫常用)、POST请求(提交数据)
【请求行】 GET /index.html HTTP/1.1
【请求头】 Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0)
Accept: text/html
Cookie: session_id=abc123
【请求体】 (GET 通常为空,POST 放提交的数据)
host:www.example.com 我要访问的网址
User-Agent 用户的个人信息
Accept 用户要获取的信息
(爬虫就是模拟人为浏览网站获取信息)
HTTP响应:
【状态行】 HTTP/1.1 200 OK
【响应头】 Content-Type: text/html; charset=utf-8
Content-Length: 1234
Set-Cookie: session_id=abc123; Path=/
Server: nginx/1.18.0
Date: Wed, 25 Jun 2026 07:11:00 GMT
【空行】
【响应体】 <!DOCTYPE html>
<html>
<head><title>百度一下</title></head>
<body>...</body>
</html>
状态行:
HTTP/1.1 200 OK
↑ ↑ ↑
协议版本 状态码 状态描述
状态码:
| 状态码 | 含义 | 通俗解释 | 你的应对 |
|---|---|---|---|
| 200 | OK | 😊 一切正常,你要的数据在包里 | 直接拆包取数据 |
| 301 | Moved Permanently | 🏠 搬家了,去新地址 | requests 自动跳转 |
| 302 | Found | 🏠 临时去别的地方 | 同上,注意新 URL |
| 400 | Bad Request | ❌ 你的请求格式错了 | 检查参数、URL |
| 401 | Unauthorized | 🔒 没登录,不许看 | 加 Cookie/Token |
| 403 | Forbidden | 🚫 认出你是爬虫,拒绝 | 换 Headers、代理、降速 |
| 404 | Not Found | 🔍 页面不存在 | 检查 URL 拼写 |
| 500 | Internal Server Error | 💥 服务器自己崩了 | 等会儿再试 |
| 502 | Bad Gateway | 🚪 网关挂了 | 服务器问题,换时间 |
| 503 | Service Unavailable | 😴 服务器太忙/维护 | Retry-After 头里有等待时间 |
响应头:告知客户端的一些信息
响应体:服务器想给客户端的一些内容
python requests命令行:A、终端下载requests库 pip install requests
B、代码段:import requests>>headers={“User-Agent”:任意网站的粘贴过来}(右键,检查,网络,User-Agent)
C、response=requests.get(网址,headers=headers)
D、print(response.text/status_code)status_code查看状态码,出现200则可以text在终端返回HTMP网页源码
2、解析网页内容(对返回的庞大数据进行提取,得到你想要的数据:如想比较商品价格只需提取价格数据,而剔除评价、商家、品牌)
学习:HTML网络结构、beautifulsoup库
HTLM网页解读:
| HTML 标签 | 文章中的对应 | 作用 |
|---|---|---|
<html> |
整篇文章 | 告诉浏览器"这是一篇网页" |
<head> |
文章封面信息(标题、作者、日期) | 浏览器需要知道,但读者不直接看到 |
<body> |
文章正文 | 读者在页面上看到的内容 |
<h1> |
大标题 | 最重要的标题 |
<p> |
段落 | 正文内容 |
<a> |
引用/链接 | 点击跳转到别处 |
<img> |
插图 | 显示图片 |
<div> |
章节/区块 | 把内容分组 |
<table> |
表格 | 行列数据 |
<!DOCTYPE html> <!-- 声明:这是 HTML5 文档 -->
<html lang="zh-CN"> <!-- 整篇网页的开始,语言是中文 -->
<head> <!-- 头部:浏览器看的"元信息" -->
<meta charset="UTF-8"> <!-- 编码:防止中文乱码 -->
<title>我的网页标题</title> <!-- 浏览器标签页上显示的名字 -->
<style> <!-- 内部 CSS:美化样式 -->
body { font-family: "Microsoft YaHei"; }
</style>
</head>
<body> <!-- 身体:用户看到的所有内容 -->
<h1>这是一个大标题</h1>
<p>这是一个段落。</p>
</body>
</html> <!-- 网页结束 -->
beautiful soup库:终端安装bs4库pip install bs4
引入from bs4 import BeautifulSoup
访问请求import requests
content=requests.get(网站).text
soup=BeautifulSoup(content,“html.parser”)指定html解析器
all_titles=soup.findAll("要查找的东西h/table")
for title in all_titles:
all_links=title.findAll(‘什么元素’)
for link in all_links:
print(link.string)
查找元素所属,右键检查,根据爬虫任务的不同具体去分析提取内容的一致性来修改代码
3、存储或分析数据
更多推荐
所有评论(0)