关于七当网
本网站七当网旨在分享个人技术方面的一些东西,目的是能为大家解除一部分的疑惑。 七当网是一个安全绿色的软件下载网站,提供无病毒、无插件、无恶意代码的软件资源, 致力于打造一个大众满意的资源下载与技术分享站点。
技术分享:Python爬虫
Python是一款现在比较火爆的语言,在数据的处理方面非常的有优势,如果你学会了这门语言, 在工作中还是能帮助到你很多的。本文将分享爬虫的基本原理和编写方法,帮助你快速入门。
"掌握爬虫技术,你可以自由地获取和分析网络上的公开数据,为你的工作和学习提供有力支持。"
爬虫的基本流程
用户获取网络数据的方式
浏览器方式
浏览器提交请求
下载网页代码
解析成页面
爬虫方式
模拟浏览器发送请求
获取网页代码
提取有用的数据
存放于数据库或文件中
爬虫要做的就是方式2,通过编程模拟浏览器行为,自动化地获取和处理网络数据。
爬虫工作流程图
发起请求
使用HTTP库发送Request
获取响应
接收服务器Response
解析内容
提取有用的数据
保存数据
存储到数据库/文件
1、发起请求
使用http库向目标站点发起请求,即发送一个Request。
Request包含:
- 请求头
- 请求体等
Request模块缺陷:不能执行JS 和CSS 代码
2、获取响应内容
如果服务器能正常响应,则会得到一个Response。
Response包含:
- html
- json
- 图片
- 视频等
3、解析内容
解析html数据:
- 正则表达式(RE模块)
- 第三方解析库如Beautifulsoup
- pyquery等
解析其他数据:
- json数据:json模块
- 二进制数据:以wb的方式写入文件
4、保存数据
数据库
MySQL,Mongdb、Redis
文件
CSV、Excel、TXT等
三、HTTP协议 请求与响应
Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket server)
Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等)
浏览器在接收Response后,会解析其内容来显示给用户,而爬虫程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有用数据。
请求与响应交互示意图
客户端
浏览器/爬虫程序
服务器
Web Server
四、Request详解
1、请求方式
GET 请求
请求参数附加在URL后面,可见、长度有限,适用于获取数据
POST 请求
请求参数在请求体中,不可见、长度无限制,适用于提交数据
常见的请求方式:GET / POST
2、请求的URL
URL(全球统一资源定位符)用来定义互联网上一个唯一的资源。例如:一张图片、一个文件、一段视频都可以用URL唯一确定。
URL编码示例:
原始URL:https://www.baidu.com/s?wd=图片
编码后:https://www.baidu.com/s?wd=%E5%9B%BE%E7%89%87
网页的加载过程:
- 加载一个网页,通常都是先加载document文档
- 在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求
3、请求头
请求头包含了浏览器或客户端的相关信息,服务器通过请求头来识别客户端身份。
User-agent
请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户
cookies
cookie用来保存登录信息和用户状态
注意:一般做爬虫都会加上请求头,否则容易被服务器识别并封禁
请求头需要注意的参数:
(1) Referrer
访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟)
(2) User-Agent
访问的浏览器(要加上否则会被当成爬虫程序)
(3) cookie
请求头注意携带,用于维持登录状态
4、请求体
GET 方式
请求体没有内容
get请求的请求体放在 url后面参数中,直接能看到
POST 方式
请求体是format data
数据放在请求体中,不在URL中显示,更安全
ps:
- 登录窗口,文件上传等,信息都会被附加到请求体内
- 登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post
五、响应Response
1、响应状态码
200
成功
301
跳转
404
文件不存在
403
无权限访问
502
服务器错误
2、Response Header
响应头包含了服务器返回的附加信息,浏览器或爬虫可以通过响应头来处理返回的数据。
响应头需要注意的参数:
(1) Set-Cookie
例如:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来
(2) Content-Location
服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另一个页面
3、响应内容
HTML 数据
网页源代码
JSON 数据
接口返回数据
二进制数据
图片、视频等
这就是爬虫整个爬取的工作模式,理解这个模式的前提下,大家用python写一套属于自己的爬虫就不会有太多的不适应, 只要遵从这套逻辑就行。
简单爬虫代码示例
import requests
from bs4 import BeautifulSoup
# 1. 发起请求
url = "https://example.com"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Referer": "https://example.com"
}
response = requests.get(url, headers=headers)
# 2. 获取响应内容
if response.status_code == 200:
html_content = response.text
# 3. 解析内容
soup = BeautifulSoup(html_content, "html.parser")
titles = soup.find_all("h2", class_="title")
# 4. 保存数据
with open("titles.txt", "w", encoding="utf-8") as f:
for title in titles:
f.write(title.get_text() + "\n")
print("数据爬取成功!")
else:
print(f"请求失败,状态码:{response.status_code}")
代码说明:
- 使用requests库发起GET请求,设置请求头模拟浏览器
- 判断响应状态码,200表示请求成功
- 使用BeautifulSoup解析HTML内容,提取所需数据
- 将提取的数据保存到本地文件中
总结
爬虫技术是Python的重要应用场景之一,掌握爬虫的基本原理和工作流程,能够帮助你快速获取和处理网络数据。
- 理解HTTP请求与响应的交互机制
- 掌握Request和Response的关键参数
- 选择合适的解析工具处理不同类型的数据
- 合理保存爬取到的数据
- 遵守网站robots协议,合法爬取数据
随着实践的深入,你还可以学习反爬机制的应对、异步爬虫、分布式爬虫等高级主题,让你的爬虫更加强大和稳定。
留言讨论
张三
2025-06-15 14:30
非常详细的爬虫教程,刚入门的小白表示收获很大!请问作者有没有推荐的练习网站?
李四
2025-06-14 09:15
代码示例很清晰,已经成功运行了!想问一下,如果遇到需要登录的网站,爬虫该如何处理呢?
作者回复
2025-06-14 10:20
可以通过cookies登录或者模拟登录的方式处理。建议先通过浏览器登录,获取有效的cookies, 然后在爬虫中携带这些cookies访问需要登录的页面。对于需要动态验证的登录,可以考虑使用selenium等工具模拟浏览器操作。
王五
2025-06-12 16:45
请问BeautifulSoup和pyquery哪个更好用?各自的优势是什么?